Java

Java/자바 오버로딩

dhfkdlsj 2024. 6. 16. 16:49

생성자 오버로딩 

매개변수가 다른 생성자를 여러 개 선언하는 것

public class Dog{
    String name;
    int age;
    Dog() {
        this.name ="강아지";
        this.age = 1;
    }
    Dog(String name) {
        this.name = name;
        this.age = 3;
    }
    Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
} //Dog 생성자 오버로딩
public class DogTest {
    public static void main(String[] args) {
        Dog dog = new Dog();
        System.out.println("dog.name : "+dog.name);
        Dog dog1 = new Dog("바다");
        System.out.println("dog1.name : "+dog1.name);
    }
} //Dog 객체 생성후 출력
실행 결과

dog.name : 강아지
dog1.name : 바다

 

다른 생성자 호출

생성자 오버로딩이 많아지면 생성자 간의 중복 코드가 발생, this()를 사용하여 개선

가장 많은 매개변수가 들어가는 생성자에 공통 초기화 코드를 넣고 다른 생성자에서 호출하여 사용

//AFTER
public class Dog{
    String name;
    int age;
    
//    Dog() {
//        this.name ="강아지";
//        this.age = 1;
//    }
    Dog() {
        this("강아지",1);
    }
    
//  Dog(String name) {
//        this.name = name;
//        this.age = 3;
//    }    
    Dog(String name) {
        this(name,3);
    }
    Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

메소드 오버로딩

메소드 이름은 같지만 매개변수의 타입, 개수, 순서가 다른 메소드를 선언하는 것. 리턴타입은 무관

public class Cal {
    int plus(int x, int y){
        int sum = x+y;
        return sum;
    } // int타입 매개변수 2개
    
    double plus(double x, double y){
        double sum = x+y;
        return sum;
    } // double타입 처리
    
    int plus(int x, int y, int z){
        int sum = x+y+z;
        return sum;
    } //int타입 매개변수 3개
}
public class CalTest{
    public static void main(String[] args) {
        Cal cal = new Cal();

        int sum1 = cal.plus(1,2);
        int sum2 = cal.plus(1,2,3);
        double sum3 = cal.plus(1.3,2.2);

        System.out.println(sum1);
        System.out.println(sum2);
        System.out.println(sum3);
    }
}
실행 결과

3
6
3.5

'Java' 카테고리의 다른 글

Java/자바 오버라이딩  (0) 2024.06.16
객체 지향 설계의 5원칙 S O L I D  (0) 2024.06.14