1. 확장 클래스의 수정
○ 부모 클래스의 변수나 함수를 새롭게 정의해서 사용하는 개념
○ 오버라이딩이라고 한다.
○ 오버라이딩 예제
class Baseballplayer { /* 새롭게 추가된 함수 */ public void hit() { System.out.println("때린다.") ; } /* 부모 클래스로부터 물려받은 함수 - 오버라이딩 */ public void eat() { // System.out.println("먹는다.") ; 기존 클래스 System.out.println("야구선수가 먹는다.") ; } } |
○ 오버로딩과 오버라이딩
오버로딩 |
함수의 이름이 같으나 인자가 서로 다른 함수 |
오버라이딩 |
부모 클래스로부터 상속받은 함수를 자식 클래스에서 새롭게 정의 |
2. protected 선언
○ protected 접근 권한
부모 클래스 |
자식 클래스(상속) |
다른 클래스(미상속) |
private |
× |
× |
public |
○ |
○ |
protected |
○ |
× |
- private 은 함수로 접근하지 않으면 고칠 수 없다.
○ protected 사용 예제 : protected_01.java
class Man { protected String name ; public void eat() { System.out.println("먹는다.") ; } } class BaseballPlayer extends Man { BaseballPlayer(String n) { name = n ; } public void playHit() { System.out.println(name + "가 때린다.") ; } }
class protected_01 { public static void main(String args[]) { Man man = new Man() ; BaseballPlayer park = new BaseballPlayer("박찬호") ; park.playHit() ; } } |
- 실행 결과
3. 수정금지! final
○ 함수나 변수를 더 이상 수정하지 못하도록 고정시킴
○ 테스트 예제 : final_01.java
class Man { final String name = "박찬호" ; public final void eat() { System.out.println("먹는다.") ; } } class BaseballPlayer extends Man { public void eat() { System.out.println("야구선수가 먹는다.") ; } }
class final_01 { public static void main(String args[]) { Man man = new Man() ; BaseballPlayer park = new BaseballPlayer() ; park.eat() ; } } |
- 컴파일 결과
· 함수 eat()는 절대 수정할 수 없도록 했는데 오버로딩으로 수정해서 사용하려 했기 때문에 에러가 난다.
· 오버라이딩을 할 수 없다는 에러메시지다.
'프로그래밍 > 초보자를 위한 Java 프로그래밍 입문' 카테고리의 다른 글
20. 패키지, 인터페이스, 예외처리 (0) | 2013.03.11 |
---|---|
18. 클래스의 확장 - 상속(1) (0) | 2013.03.03 |
17. 클래스의 보호 (0) | 2013.03.02 |
16. 생성자 (0) | 2013.03.01 |
15. 클래스 기반의 프로그래밍 (0) | 2013.02.28 |