생성자 오버로딩
매개변수가 다른 생성자를 여러 개 선언하는 것
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 |