자바의 정석 - 기초편

상속

ODaram 2022. 8. 16. 17:04

상속 (Inheritance)

 - 기존의 클래스로 새로운 클래스를 작성하는 것. (코드의 재사용)

 - 두 클래스를 부모와 자식으로 관계를 맺어주는 것.

 상속으로 작성하는 방법 

      >>

       class 자식클래스 extends 부모클래스 {    // extends : 키워드

          // ..... 

       }

child 클래스가 parents 클래스의 자손임

 - 자손은 조상(부모의 부모)의 모든 멤버를 상속받는다. (생성자, 초기화블럭 제외)

- 자손의 멤버 개수는 조상보다 적을 수 없다. (같거나 많다.)

     코드와 다이어그램

         class Parent {
               int age;             // 부모는 멤버 1개
          }
         class Child extends Parent { }    // 자신의 멤버 0개, 부모로 부터 상속받은 멤버 1개 ; 멤버 1개

 

부모와 자식이 관계를 그린 다이어그램

 

 - 자손의 변경은 조상에 영향을 미치지 않는다.

   코드와 다이어그램

       class Parent {    
          int age;                                           // 멤버 1개
       }
       class Child Parent {
          void play() {
             System.out.println("놀자 ~");          // 자신 멤버 1개, 상속받은 멤버 1개 ; 멤버 2개 
          }
       }

부모와 자식의 관계를 그린 다이어그램

 

      클래스 포인트 : 2차원 좌표의 한점 (0,0)

      Class point {

         int x;    //  (0 (x값),0 (y값))

         int y;

      }

      -> 3차원 좌표의 한점(x,y,z) 으로 만들 수 있는 두가지 방법이 있음

1. point 클래스와 관계없는 코드
  class Point3D {
      int x;
      int y;
      int z;
  }
-> 멤버가 3개 
  2. point 클래스 상속 코드
  class Point3D extends Point {
         int z;
  }
-> 멤버가 3개 
but , 부모인 point 클래스에서 int y 가 삭제되면 
 Point3D 의 멤버는 2개