-
[자바의 정석] ch7-1 ~ ch7-11 객체지향 개념 정리 (상속, Object클래스, 오버라이딩, 참조변수 super, 생성자super() )Programming Language/Java 2021. 7. 19. 00:21
ch7-1 상속(Inheritance)
- 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용)
- 두 클래스를 부모와 자식으로 관계 맺어주는 것
- 자손은 조상(부모의 부모)의 모든 멤버를 상속받음(생성자, 초기화 블럭 제외)
- 자손의 멤버 개수는 조상보다 적을 수 없음(같거나 많음) -> 자손의 멤버개수 >= 조상의 멤버 개수
- 자손의 변경은 조상에 영향을 미치지 않음(단, 조상의 변경은 자손에게 영향을 줌)
ex)
class 자식클래스 extends 부모클래스 {
}
ch7-3 포함 관계
- 포함(composite) : 클래스의 멤버로 참조변수를 선언하는 것
class Circle {
int x; class Circle{ class Point {
int y; -----> Point c = new Point(); -----> int x;
int r; int r; int y;
} } }
1. 상속 2. 포함 관계(Point class 포함)
ch7-4 클래스 간의 관계 결정하기
- 상속관계 : '~은 ~이다. (is~a)'
- 포함관계 : '~은 ~을 가지고 있다. (has~a)'
*상속은 제한이 많기 때문에 꼭 필요할 때만! 대부분 포함으로 사용함
1. 포함 2. 상속
class Circle { class Circle extends Point {
Point c = new Point();
int r; int r;
} }
원(Circle)은 점(Point)을 가지고 있다. 원(Circle)은 점(Point)이다.
ch7-5 단일 상속(Single Inheritance)
- Java는 단일(하나의 부모만 상속) 상속만을 허용함
*인터페이스 사용하면 충돌 문제 해결하면서, 다중 상속 효과 나타낼 수 있게함
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 하면 인터페이스 없이도 다중상속 효과 낼 수 있음
ch7-6 Object클래스 - 모든 클래스의 조상
- 부모가 없는 클래스는 자동적으로 Object클래스를 상속받게 됨
- 모든 클래스는 Object 클래스에 정의된 11개(toString(), equals(Object obj), hasCode() 등)의 메서드를 상속받음
*toString()은 객체의 주소값을 찍어줌 -> 오버라이딩 부분에서 더 자세히 배움
ch7-7 (메서드)오버라이딩(overriding)
- 상속받은 조상의 메서드를 자신에 맞게 변경하는 것 (override: 덮어쓰다)
- 선언부 변경 불가. 내용만 변경 가능( 구현부 { } )
ch7-8 오버라이딩의 조건
1. 선언부가 조상 클래스의 메서드와 일치해야함
2. 접근 제어자(public, protected, defalt, private)를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없음
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없음
ch7-9 오버로딩 vs 오버라이딩
오버로딩(overloading) : 기존에 없는 (이름이 같은)새로운 메서드를 정의하는 것(new)
오버라이딩(overriding) : 상속받은 메서드의 내용을 변경하는 것(change, modify)
ch7-10 참조변수 super
- 객체 자신을 가리키는 참조변수. 인스턴스 메서드(생성자) 내에서만 존재
- 조상의 멤버를 자신의 멤버와 구별할 때 사용
ch7-11 super() - 조상의 생성자
*참조변수 super와 다름
- 조상의 생성자를 호출할 때 사용
- 조상의 멤버는 조상의 생성자를 호출해서 초기화
- (추가조건) 생성자의 첫 줄에 반드시 생성자( super(), this())를 호출해야 함. 그렇지 않으면 컴파일러가 생성자의 첫 줄에 super(); 를 삽입
============================================================================
'Programming Language > Java' 카테고리의 다른 글
[자바의 정석] ch7-21 ~ ch7-23 객체지향 개념 정리 (접근제어자, 캡슐화, 다형성) (0) 2021.07.24 [자바의 정석] ch7-12 ~ ch7-20 객체지향 개념 정리 (패키지, import문, 제어자, abstract ) (0) 2021.07.22 [자바의 정석] ch6-30 ~ ch6-41 객체지향 개념 정리 (오버로딩, 생성자, 생성자 this(), 참조변수 this, 변수의 초기화) (0) 2021.07.16 [자바의 정석] ch6-22 ~ ch6-29 객체지향 개념 정리 (호출스택, static 메서드) (0) 2021.07.16 [자바의 정석] ch6-11 ~ ch6-21 객체지향 개념 정리 (선언위치, 변수종류, 메서드, return문) (0) 2021.07.14