[Java] 오버로딩(Overloading) - 메소드와 생성자 오버로딩

Hee·2024년 4월 1일

Java 복습

목록 보기
21/46
post-thumbnail

메소드 오버로딩

: 매개변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술이다.


메소드 오버로딩 방법

메소드의 이름은 같지만 매개변수 개수나 타입이 달라야 한다.

class MyClass2{
	public int plus(int x, int y){
    	return x+y;
    }
    
    public int plus(int x, int y, int z){
    	return x + y + z;
    }
    
    public String plus(String x, String y){
    	return x + y;
    }
    
}

변수명은 다르지만, 매개변수의 타입과 개수가 동일한 메소드를 또 정의 할 수 없다.

public int plus(int i, int f){
	return i + f;
}

오버로딩은 메소드의 매개변수 타입이나 개수가 달라야 한다는 점!!



메소드 오버로딩 이용

  • 메소드의 인자에 어떤 값이 쓰이느냐에 따라 각기 다른 메소드가 호출된다.
public MethodOverloadExam{
	public static void main(String[] args){
    	MyClass2 m = new MyClass2();
        System.out.println(m.plus(5, 10));
        System.out.println(m.plus(5, 10, 15));
        System.out.println(m.plus("hello", " world"));
    }
}



생성자 오버로딩

: 생성자의 매개변수의 유형과 개수가 다르게 하여 같은 이름의 생성자를 여러개 가질 수 있다.

  • 생성자도 메소드 오버로딩과 마찬가지로 여러 개를 선언할 수 있다.
  • 매개변수의 수와 타입이 다르다면 여러 개의 생성자를 선언할 수 있다.


생성자 오버로딩 방법

public class Car{
	String name;
    int number;
    
    public Car(){
    
    }
    
    public Car(String name){
    	this.name = name;
    }
    
    public Car(String name, int number){
        this.name = name;
        this.number = number;
    }
}

생성자 오버로딩 이용

public class CarExam4{
	public static void main(String[] args){
    	Car c1 = new Car();
        Car c2 = new Car("소방차");
        Car c3 = new Car("구급차", 1234);
    }
}

자기 생성자 호출하는 this()

  • 기본생성자를 호출하였을 때 name을 "경찰차", 숫자를 0으로 초기화하기
public Car(){
	this.name = "경찰차";
    this.number = 0;
}
  • 위처럼 작성했을 경우 코드의 중복이 일어난다.
  • 자신이 가지고 있는 다른 생성자를 이용할 수 있다.
public Car(){
	this("경찰차", 0);
}

  • this()는 자신의 생성자를 호출하는 것이다.

자기 자신의 생성자를 호출함으로써 비슷한 코드가 중복되서 나오는 것을 방지할 수 있다.

0개의 댓글