Java/복습

[Java/복습] 객체지향 프로그래밍 1

hrming 2023. 5. 28. 19:05

1. 상속

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

 

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

 

② 자손 클래스는 조상 클래스의 모든 멤버를 상속받기 때문에, 자손 클래스는 부모 클래스의 멤버들을 포함한다.

 (생성자와 초기화 블럭은 상속되지 않음. 멤버만 상속됨. 명시적 초기화와 초기화 블럭멤버변수 초기화 시기와 순서 )

→ 보다 적은 양의 코드로 새로운 클래스를 작성할 수 있고, 코드를 공통적으로 관리할 수 있음. 

 

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

 

④ 자식 클래스 extends 부모 클래스.

 

⑤ 자손 클래스가 변경되는 것은 조상 클래스에 아무런 영향을 주지 못한다.

 

- 조상 클래스 : Parent Class, Super Class, Base Class
- 자손 클래스 : Child Class, Sub Class, Derived Class

예르미의 코딩노트 블로그 (상속 관련 내용이 잘 정리되어 있어서 추가로 참고 👍)

 

 


 

2. 포함

한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것 

 

① 상속 이외에 클래스를 재 사용하는 또 다른 방법으로, 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것이다.

 

② 하나의 거대한 클래스를 작성하는 것 보다 단위별로 여러 개의 클래스를 작성한 다음, 이 단위 클래스들을 포함관계로 재사용하면 보다 간결하고 손쉽게 클래스를 작성할 수 있다. 

Class Point {
 int x;
 int y;
}

Class Circle {
 int x; // 원점의 x좌표 
 int y; // 원점의 y좌표
 int r; // 반지름(radius)
}
 
 // 클래스 포함 관계로 재 작성
Class Circle {
  Point p = new Point(); // Point 클래스를 멤버변수로 선언 
  int r;
 }

 


3. 클래스간의 관계 구분

상속관계: '~은 ~이다'  / 포함관계: '~은 ~을 가지고 있다' 

 

Circle과 Point의 경우, Circle은 Point이다 보다 Circle은 Point를 가지고 있다라는 문장이 더 자연스럽기 때문에, 상속관계가 아닌 포함 관계를 맺어주는 것이 옳다.

 


 

4. 단일 상속

자바에서는 오직 단일 상속만을 허용한다

- 자바에서는 단일 상속만을 허용하기 때문에, 비중이 높은 클래스 하나만 상속받고 나머지는 포함관계로 처리한다.

- 다중상속을 허용하게 될 경우, 여러 클래스로부터 상속을 받을 수 있기 때문에 복합적인 기능을 가진 클래스를 작성할 수 있지만, 클래스간의 관계가 매우 복잡해진다. (서로 다른 클래스로부터 상속받은 멤버간의 이름이 같은 경우 구별할 방법이 없다.) 

 

 


5. Object Class

모든 클래스 상속계층도의 최상위에 있는 조상클래스

- 다른 클래스로부터 상속 받지 않는 모든 클래스들은 자동적으로 Object 클래스로부터 상속받게 됨.

- toString()이나 equals(Object o)와 같은 메서드들은 Object 클래스에 정의되어 있는 메서드이기 때문에 별도로 정의하지 않고 사용할 수 있음.

 

 

 

참고 😎

1. 자바의 정석

2. 예르미의 코딩노트 블로그