Jay's Developer Note

[JAVA] Class - 4(메소드) 본문

JAVA

[JAVA] Class - 4(메소드)

Jay(J) 2022. 3. 13. 02:33
728x90

메소드(Method)

메소드(Method)는 클래스가 가지는 동적인 특성을 정의한다.

부르는 사람에 따라 메소드, 메서드 등 다양하게 불린다.

 

형식
[접근 제어자] [사용 방식] 리턴타입 메소드이름([매개 변수]...) {
  // 코드
}

생성자와는 다르게 리턴타입이 반드시 들어가야 한다.

 

접근 제어자

접근 제어자는 멤버 변수와 동일하게 적용된다.

멤버 변수와 동일하게 적용됨

사용 방식

 

사용방법
class Hyundai {
  public static void main(String[] args) {
    Car mCar = new Car();
    mCar.model = "AVANTE";
    mCar.print();
  }
}

class Car {
  String model;
  
  public void print() {
    System.out.println("자동차 모델명 : " + this.model);
  }  
}
//실행 결과
자동차 모델명 : AVANTE

 

응용

이전에 배웠던 생성자를 응용하여 소스코드를 변경해보겠다.

(생성자 관련 게시글 : https://fall-in-it.tistory.com/34)

class Hyundai {
  public static void main(String[] args) {
    // 모델 변수 초기화하면서 Car 객체 생성
    Car mCar = new Car("AVANTE");
    // model 설정이 필요 없어짐
    // mCar.model = "AVANTE";
    mCar.print();
  }
}

class Car {
  String model;  
  
  // 생성자를 추가하면 기본 생성자가 사라지기 때문에
  // 기본 생성자를 추가
  public Car() {}  
  
  // 모델 변수를 초기화하는 생성자 추가
  public Car(String model) {
    this.model = model;
  }
  
  public void print() {
    System.out.println("자동차 모델명 : " + this.model);
  }  
}
//실행 결과
자동차 모델명 : AVANTE

 

클래스 메소드(static)

멤버 변수에 static 을 선언하면 클래스 변수가 되듯 메소드에도 static 을 선언하면 클래스 메소드가 된다. 클래스 변수와 동일하게 클래스를 로딩할 때 생성되기 때문에 클래스.메소드( ) 로 사용할 수 있다. 클래스가 로딩될 때 생성되기 때문에 보통 Util 관련된 클래스나 공통으로 쓰이는 클래스에 싱글톤 패턴으로 많이 사용되는 편이다.

 

사용방법
class Hyundai {
  public static void main(String[] args) {
    Car.print("AVANTE");
  }
}

class Car {
  public static void print(String model) {
    System.out.println("자동차 모델명 : " + model);
  }  
}
//실행 결과
자동차 모델명 : AVANTE

 

오버로딩(Overloading)

오버로딩은 동일한 클래스 안에 매개변수의 개수, 타입, 순서가 다른 동일한 이름의 메소드가 여러 개 있는 것이다.

이는 객체지향 언어의 특징 중 하나인 다형성이다. 접근제어자, 사용방식, 리턴타입이 다른 것은 오버로딩에 속하지 않는다.

사용방법
class Hyundai {
  public static void main(String[] args) {
    Car mCar = new Car();
    // int 매개변수 메소드 호출
    mCar.refueling(4);
    mCar.print();
    // String 매개변수 메소드 호출
    mCar.refueling("8");
    mCar.print();
  }
}

class Car {
  int oil;

  public void print() {
    System.out.println("현재 연료 : " + oil + "L");
  }

  public void refueling(int oil) {
    this.oil = oil;
  }

  public void refueling(String oil) {
    // String -> int
    this.refueling(Integer.parseInt(oil));
  }

  // 리턴타입이 다른 것은 의미 없음
  //public boolean refueling(int oil) { }
  // 접근 제한자가 다른 것은 의미 없음
  //void refueling(int oil) { }
}
// 실행 결과
현재 연료 : 4L
현재 연료 : 8L
728x90

'JAVA' 카테고리의 다른 글

[JAVA] Class - 5(상속)  (0) 2022.04.02
[JAVA] 캡슐화 & 은닉화  (0) 2022.03.16
[JAVA] Class - 3(멤버 변수)  (0) 2022.03.11
[JAVA] Class - 2(생성자)  (0) 2022.02.25
[JAVA] Class - 1(클래스)  (0) 2022.02.24