오버라이드란 부모 클래스의 메소드를 자식 클래스에서 동일한 이름으로 다시 재정의하여 부모 클래스의 메소드를 호출하지 않고 자식 클래스의 메소드를 사용하는 방법이다.
package Overide;
public class Super {
public Super() {}
public void method1() {
System.out.println("Super의 method1");
}
}
package Overide;
public class Derived extends Super {
public Derived() {}
public void method1() {
System.out.println("Derived의 method1"); //부모의 함수를 오버라이드
}
}
package Overide;
public class Main {
public static void main(String[] args) {
Super sup = new Super();
Derived der = new Derived();
sup.method1(); //부모의 method1을 호출
der.method1(); //자식의 method1을 호출
}
}
오버라이드의 단점은 자식이 부모 클래스의 메소드를 오버라이드 한 순간부터 부모의 함수를 사용할 수 없다는 것이다. 이러한 단점을 해결하기 위해 java는 super라는 키워드를 제공하고 있다. super는 부모 객체의 메소드를 찾을 때 사용한다.
package Overide;
public class Super {
public Super() {}
public void method1() {
System.out.println("Super의 method1");
}
}
package Overide;
public class Derived extends Super {
public Derived() {}
public void method1() {
super.method1(); //부모 클래스에 method1을 호출
System.out.println("Derived의 method1");
}
}
package Overide;
public class Main {
public static void main(String[] args) {
Derived der = new Derived();
der.method1(); //부모의 method1을 호출한 뒤 자식의 method1을 호출한다.
}
}
'자바' 카테고리의 다른 글
15. 인터페이스 (0) | 2019.07.29 |
---|---|
14. 추상 클래스 (0) | 2019.07.23 |
12. 상속1 (0) | 2019.07.20 |
11. static (0) | 2019.07.19 |
10. 패키지에 대한 이해 (0) | 2019.07.18 |