학습(공부)하는 블로그 :: 19. 클래스의 확장 - 상속(2)
 

 

Notice»

Recent Post»

Recent Comment»

Recent Trackback»

03-28 14:32

반응형

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()는 절대 수정할 수 없도록 했는데 오버로딩으로 수정해서 사용하려 했기 때문에 에러가 난다.

· 오버라이딩을 할 수 없다는 에러메시지다.

반응형
: