[Java] 객체지향 4대 특성 - 상속(확장)

- 2 mins

상속이란?

상속의 목적은 분류에 있다. 이를 통해 재사용성확장성을 얻는다.

// 딸을 낳으니 아버지 역할을 한다? (x)
Father dauther = new Dauther();

// 팽귄을 낳으니 새의 역할을 한다? (o)
Bird penguin = new Penguin();

객체지향에서 상속은 계층이 아닌 확장.

보통 상속이 계층적이라 착각한다. 그래서 Father의 자식(하위)클래스가 Dauther라 생각한다. 하지만 딸이 아버지의 역할을 할 순 없다.

반대로 Bird의 한 종류인 Penguin은 Bird의 역할을 할 수 있다.

// 자식의 한 종류인 딸이 자식의 역할을 한다.
Child dauther = new Dauther();

Screenshot

하위클래스 is kind of 상위클래스 => 객체지향 5원칙 중 LICOV 치환 원칙

키워드도 inheritance (상속)이 아닌 extends (확장)이다.

고래는 포유류를 상속 받는다? (x)

고래는 포유류를 확장한 것이다.(o)

penguin 객체의 T 메모리 매핑과정

JVM의 메모리를 추상화한 T 메모리란 용어에 대해 알고 싶으면 이 글을 읽어볼 것

Screenshot

Penguin class로 객체를 생성하면 heap 영역Penguin객체 뿐만아니라. 상위클래스인 Animal 객체도 생성이 된다.


참고

Sehun Kim

Sehun Kim

하다보니 되더라구요.

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora