메소드(method)

임성준·2022년 1월 26일
0

Java 기초 문법

목록 보기
8/14
post-thumbnail

자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 갖게된다. 그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.

💎 목적
1. 중복되는 코드의 반복적인 프로그래밍을 피할 수 있다.
2. 모듈화로 인해 코드의 가독성도 좋아진다.
3. 손쉽게 유지보수를 할 수 있다.

💎 문법

  • 접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
    // 구현부 }

1. 접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시
2. 반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시
3. 메소드 이름 : 메소드를 호출하기 위한 이름을 명시
4. 매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시
5. 구현부 : 메소드의 고유 기능을 수행하는 명령문의 집합

💎 메소드 시그니처(method signature)란 메소드의 선언부에 명시되는 매개변수의 리스트를 가리킨다.

메소드 호출

💎 문법

  • 객체참조변수이름.메소드이름(); // 매개변수가 없는 메소드의 호출
  • 객체참조변수이름.메소드이름(인수1, 인수2, ...); // 매개변수가 있는 메소드의 호출

예제)

class Car {
    private int currentSpeed;
    private int accelerationTime;

    public void accelerate(int speed, int second) {
        System.out.println(second + "초간 속도를 시속 " + speed + "(으)로 가속함!!");
    }
}

 

public class Method01 {
    public static void main(String[] args) {
        Car myCar = new Car();   // 객체 생성
        myCar.accelerate(60, 3); // 메소드 호출
    }
}

// 출력) 3초간 속도를 시속 60(으)로 가속함!!

생성자(constructor)

자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다.

💎 문법

  • 클래스이름() { ... } // 매개변수가 없는 생성자 선언
  • 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언

💎 특징

  • 생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.
  • 생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
  • 객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있다.
    즉, 생성자도 하나의 메소드이므로, 메소드 오버로딩이 가능

예제)

class Car {
    private String modelName;
    private int modelYear;
    private String color;
    private int maxSpeed;
    private int currentSpeed;
 
	
    // 생성자(constructor)
    
    Car(String modelName, int modelYear, String color, int maxSpeed) {
        this.modelName = modelName;
        this.modelYear = modelYear;
        this.color = color;
        this.maxSpeed = maxSpeed;
        this.currentSpeed = 0;
    }


    public String getModel() {
        return this.modelYear + "년식 " + this.modelName + " " + this.color;
    }
}

 

public class Method02 {
    public static void main(String[] args) {
    
        Car myCar = new Car("아반떼", 2016, "흰색", 200); // 생성자의 호출
        System.out.println(myCar.getModel()); // 생성자에 의해 초기화되었는지를 확인함.
        
    }
}

// 출력) 2016년식 아반떼 흰색

기본 생성자(default constructor)

자바의 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 한다.
하지만 특별히 생성자를 정의하지 않고도 인스턴스를 생성할 수 있습니다.
이것은 자바 컴파일러가 기본 생성자(default constructor)라는 것을 기본적으로 제공해 주기 때문이다. 기본 생성자는 매개변수를 하나도 가지지 않으며, 아무런 명령어도 포함하고 있지 않는다.

this와 this()

this 참조 변수

this 참조 변수는 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수이다.
이러한 this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다.

예제

class Car {
    private String modelName;

    Car(String modelName) {
        this.modelName = modelName;

    }

    ...

}

💎 위의 예제처럼 생성자의 매개변수 이름과 인스턴스 변수의 이름이 같을 경우에는 인스턴스 변수 앞에 this 키워드를 붙여 구분해만 한다.

this() 메소드

this() 메소드는 생성자 내부에서만 사용할 수 있으며, 같은 클래스의 다른 생성자를 호출할 때 사용

예제)

class Car {
    private String modelName;

 
    Car(String modelName, int modelYear, String color, int maxSpeed) {
        this.modelName = modelName;
    }

 
    Car() {
        this("소나타); // 다른 생성자를 호출함.
    }

 

    public String getModel() {

        return this.modelName;

    }

}

 

public class Method05 {
    public static void main(String[] args) {
        Car tcpCar = new Car(); System.out.println(tcpCar.getModel());
    }
}

// 출력) 소나타

매개변수를 가지지 않는 두 번째 생성자는 내부에서 this() 메소드를 이용하여 첫 번째 생성자를 호출한다. 이렇게 내부적으로 다른 생성자를 호출하여 인스턴스 변수를 초기화할 수 있다.

💎 단, 한 생성자에서 다른 생성자를 호출할 때에는 반드시 해당 생성자의 첫 줄에서만 호출할 수 있다.

출처 : http://www.tcpschool.com/java/java_methodConstructor_method

profile
오늘도 공부 📖🌙

0개의 댓글