| 1. Basics | 클래스, 객체, 변수, 메서드 // 생성자, 초기화 |
| 2. Advanced | 상속, 오버라이딩 // package, import, modifiers, 다형성 // 추상클래스, interface, 내부클래스 |
| 1. 계승 | 1. 계승의 정의 2. 클래스 계승 관계와 인스턴스 객체 3. 클래스 간의 관계 4. Object 클래스 |
1.1 계승(Inheritance)의 정의 '이미 있는 것을 그대로 활용해서 새로운 것 만들어내기'
-계승(상속): 기존의 클래스를 재사용하여 새로운 클래스 작성
- 장점
-코드의 추가 및 변경이 매우 용이
-코드의 재사용성을 높이고 코드의 중복 제거 -> 프로그램 생산성과 유지보수에 기여

- 계승에 필요한 두 클래스
-상위(super) 클래스 = 부모, 조상, 기반(c++용어)
-하위(sub) 클래스 = 자손, 자식, 파생된(c++용어) - 하위클래스는 상위클래스의 모든 멤버(필드)를 이어받음
-하위 클래스에 새로운 코드가 추가되어도 상위 클래스는 아무 영향X
-생성자와 초기화 블록은 상속되지 않음(멤버만 상속됨) - 표현 방법
class Parent{
//...
}
class Child1 extends Parent {
//...
}
class Child2 extends Parent {
//...
}
class GrandChild extends Child1 {
//...
}

1.2 클래스 계승 관계와 인스턴스 객체
하위 클래스의 인스턴스 생성은 상위 클래스의 멤버와 하위 클래스의 멤버가 합쳐진 하나의 인스턴스 생성으로 볼 수도 있음
1.3 클래스 간의 관계
- 바람직한 상위-하위 클래스 관계 만들기
하위 클래스들의 공통적인 부분은 상위 클래스에서 관리하고 개별 부분은 하위 클래스에서 관리하도록 처음부터 신경쓰기 - 포함 관계
- 클래스의 멤버변수로 다른 클래스를 선언하는 것
- 단위 별로 여러 개의 클래스를 작성, 이 단위 클래스들을 조합(포함)해서 하나의 커다란 클래스를 생성

- 계승 관계 vs 포함 관계
-계승: is-a 관계 ex)원은 점이다 ... X
-포함: has-a 관계 ex)원은 점을 포함한다 ...O
*계승 관계는 꼭 필요할 때 아니면 자제하자 - 예제 코드

- 예제 코드 설명
계승 관계와 포함 관계 모두 표현되어 있음
-의문점1: 왜 이미 상위 클래스인 Shape에서 정의된 void draw()를 하위 클래스들이 다시 정의하고 있을까?
-> 다음 포스팅 '오버라이딩'에서 계속됩니다
-의문점2: main 코드에서 Circle c = new Circle(p2, 7); 에 있는 p2 int가 아닌데 괜찮나?
1.4 Object 클래스
: 모든 클래스의 조상
다른 클래스로부터 계승 받지 않는 클래스는 자동으로 Object 클래스를 계승받음(컴파일러가 자동으로 추가)
-> 모든 클래스는 Object 정의된 유용한 메서드를 기본적으로 계승 받음 ex) toString(), equals(Object to), ...
'CSE > CP1 이론' 카테고리의 다른 글
| CP1_07.객체지향 프로그래밍_Advanced_파일과 예외처리 (0) | 2024.06.17 |
|---|---|
| CP1_07.객체지향 프로그래밍_Advanced_2.오버라이딩 (0) | 2024.06.11 |
| CP1_06. 객체지향프로그래밍_Advanced_6. 다형성 (0) | 2024.06.10 |
| CP1_08. 객체지향프로그래밍_Advanced_인터페이스 (0) | 2024.06.10 |
| CP1_07. 객체지향프로그래밍_Advanced_추상클래스 (0) | 2024.06.10 |