자바

상속, 포함, Object 클래스

Kiwisae 2022. 7. 18. 20:51

상속
기존의 클래스를 이용해 새로운 클래스를 작성한다.
두 클래스를 부모-자식으로 관계를 맺어 준다.

class Parent { }
class Child extends Parent { }


이 때 Child 클래스 와 Parent 클래스에는 상속 관계에 있다고 표현한다.



1. 자손 클래스 Child는 부모 클래스 Parent의 모든 멤버를 상속받는다. (생성자, 초기화블록 제외)
부모의 부모의 부모의 부모의.... 부모까지 전부 상속받는다.

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

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

다음과 같은 코드가 있을 때, 아래와 같은 그림으로 표현할 수 있다.

class Point {
int x; int y; }

class Point 3D {
int x; int y; int z; }

class Point3D extends Point {
int z; }

 


자식 클래스에겐 int x와 y가 없지만 상속으로 자연스럽게 멤버로 가질 수 있게 된 것이다.

이 때, 자식 클래스에서 x와 y의 값을 변경한다 해도 부모 클래스에겐 영향을 미치지 않는다.


 


포함

클래스의 멤버로 참조변수를 선언하는 것. 상속과 다름.


포함관계가 있는 클래스의 객체 c의 x를 가리킬 때 c.c.x; 라고 표현할 수 있다.
작은 단위의 클래스를 만들고, 이 둘을 조합해서 클래스를 만든다.

class Point {
int x; int y; } 가 있을 때

1) 포함
class Circle {
Point c = new Point();
int r; }

2)상속
class Circle extends Point {
int r; }


상속관계 : A는 B이다.
포함관계 : A는 B를 가지고 있다.

 


단일 상속
자바는 단일상속만을 허용한다.
비중이 높은 클래스 하나만 상속 관계로, 나머지는 포함 관계로 한다.

예를 들어 두 클래스를 상속 받았을 때, 두 클래스에게 이름이 같은 메소드가 있다면 ?
다중 상속을 허용하지 않기 때문에 클래스 간의 관계가 명확해진다.

 

 

 

Object

모든 클래스의 조상

부모가 없는 클래스는 자동으로 Object 클래스를 상속받게 된다.
상속이 명시 되어 있지 않은 모든 클래스는 Object를 상속받고 있다. 
단지 사용자가 보는 화면에는 생략되어 있을 뿐