1. 오버로드(Overload)
1-1. 메서드 오버로드(Overload)
- 원칙적으로 하나의 클래스 안에서는 동일한 이름의 메서드가 두 개 이상 존재할 수 없지만, 이를 가능하게 하는 예외적인 처리 기법
1-2. 이름이 동일한 메서드를 정의하기 위한 조건
- 메서드 간의 파라미터가 서로 달라야 한다.
-> 파라미터의 데이터 타입이 다르다.
(데이터 형이 동일하고 변수의 이름이 다른 경우는 동일한 파라미터로 인식된다.)
-> 파라미터의 개수가 다르다.
-> 서로 다른 데이터형을 갖는 파라미터들의 전달 순서가 다르다.
- 리턴형이 다른 경우는 오버로드의 성립에 아무런 영향을 주지 않는다.
1-3. 오버로드의 예시
- 파라미터의 데이터 형이 서로 다르기 때문에 오버로드 성립
public void user(int a){...}
public void user(String a){...}
- 파라미터의 개수가 서로 다르기 때문에 오버로드 성립
public void user(int a){...}
public void user(int a, int b){...}
- 데이터 형의 전달 순서가 서로 다르기 때문에 오버로드 성립
public void user(int a, String b){...}
public void user(String a, int b){...}
public void user(int a){...}
public void user(int b){...}
public class Character {
private String job;
private int age;
public void setProperty(String job) {
this.job = job;
}
public void setProperty(int age) {
this.age = age;
}
public void setProperty(String job, int age) {
this.job = job;
this.age = age;
}
public void setProperty(int age, String job) {
this.age = age;
this.job = job;
}
@Override
public String toString() {
return "Character [job=" + job + ", age=" + age + "]";
}
}
public class Main02 {
public static void main(String[] args) {
Character c = new Character();
c.setProperty(19);
System.out.println(c.toString());
c.setProperty("회사원");
System.out.println(c.toString());
c.setProperty(20, "자영업");
System.out.println(c.toString());
c.setProperty("교수", 30);
System.out.println(c.toString());
}
}