본문 바로가기

자바

13. 상속2

오버라이드란 부모 클래스의 메소드를 자식 클래스에서 동일한 이름으로 다시 재정의하여 부모 클래스의 메소드를 호출하지 않고 자식 클래스의 메소드를 사용하는 방법이다.

 

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