Method 오버라이딩
•
자식 클래스가 부모 클래스의 메서드를 자신의 쓰임새를 위해 재정의 하는 것.
•
부모 클래스의 Method 명, Return Type , parameter 가 같고 바디 안의 내용만 다르다.
예제 코드
public class MethodOverriding_2 {
public static void main(String[] args) {
Manager obj1 = new Manager();
System.out.println("관리자의 월급: " + obj1.getSalary());
Programmer obj2 = new Programmer();
System.out.println("프로그래머의 월급: " + obj2.getSalary());
}
}
class Employee {
int getSalary(){
return 0;
}
}
class Manager extends Employee {
@Override
int getSalary(){
return 5000000;
}
}
class Programmer extends Employee {
@Override
public int getSalary() {
return 6000000;
}
}
Java
복사
Employee 클래스를 상속받은 Manager 클래스, Programmer 클래스가 있다.
Manager , Programmer 클래스 모두 Employee 에서 사용하는 getSalary Method 를 갖고 있다.
•
이 때 Manager 클래스의 객체 변수로 getSalary 를 호출하면 Manager 클래스의 getSalary 가 호출되어 5000000이 리턴된다.
•
마찬가지로 Programmer 클래스의 객체변수도 Programmer 내의 getSalary 가 호출되어 6000000이 리턴된다.
Overriding 된 Method 호출 시 자식 클래스의 Method 가 호출된다.
@Override로 Annotation을 달아준다. (알아보기 편하게)
오버로딩
오버로딩이란?
•
같은 클래스 내에 있는 동일한 이름의 Method 를 사용하는 것.
•
같은 함수 이름으로 parameter의 개수나 타입을 달리 할 수 있다.
•
Return Type , parameter 전부 동일하게는 만들 수 없다. (컴파일 에러)
예제 코드
class Exployee {
int getSalary(){
return 0;
}
int getSalary(int x, int y) {
return x * y;
}
int getSalary(String str) {
return 0;
}
}
Java
복사
→ 위 코드처럼 getSalary Method 는 3가지 방식으로 오버로딩 되었다
오버라이딩과 오버로딩의 차이를 확실히 알아야 한다.
•
오버라이딩: 상속 내에서 이루어지는 Method 의 재정의
•
오버로딩: 같은 클래스 내에서 parameter 의 개수, 종류 / 리턴 타입 변화
같은 Method 이름으로 다양한 종류의 Parameter를 받을 수 있다.
→ (C 같은 경우 getSalary , getSalary1 , getSalary2 … 이렇게 함수 이름을 다르게 지정해야 한다.)