has -a & is -a 상속

Jaho·2021년 8월 11일
0

has-a

  • 상속을 사용하지 않는다.(포함관계)
  • 다른 클래스의 기능 (변수 혹은 메소드)을 받아들여 사용한다.

Computer라는 class를 CPU,RAM,Mainboard 같은 하위 클래스가 상위 클래스를 소유하고 사용하는 관계이다.

is-a

  • 상하관계가 있다.
  • 상속을 사용하기에 효율적이다.
  • 하위 클래스가 상위 클래스의 한 종류가 되는 것 (종속)

Human,Cow,Bird 모두 동물(Animal)에 속한다.
즉 일반 클래스를 구체화 하는 상황에서 사용한다.

그림 및 내용 참고

상속

  • 상위 클래스는 하위 클래스의 정보를 모른다. 즉 리턴만 가능하다.
    하지만 하위 클래스는 상위클래스의 정보를 알기 때문에 변수나 메소드를 가져와서 사용할 수 있다.
  • 하위 클래스에서 객체를 생성하면 응용할 수 있고 또 그 밑에 하위 클래스가 생성되면
    그 하위 클래스는 상속된 상위 클래스의 정보를 불러올 수 있다.

하위 클래스 생성과정

1.상위 클래스를 상속받은 하위 클래스가 생성될 때는 반드시 상위 클래스의 생성자가 먼저 호출 된다.
2.상위 클래스 생성자가 호출될 때 상위 클래스의 멤버변수가 메모리에 생성된다.

클래스간의 상속

  • 클래스의 기능은 자유롭게 호출하고 기능을 확장하기 위해 먼저 선언된 클래스의 선조로,
    기능을 필요로 하는 클래스를 후손으로 관계를 갖는다.
  • 단일 상속을 원칙으로 하며 다중상속은 클래스간의 허용하지 않는다.
profile
개발 옹알이 부터

0개의 댓글