※ 이 글은 자바의정석을 참조하였다.
1. 상속
- 기존의 클래스를 재사용해서 새로운 클래스를 작성
- 두 클래스를 조상과 자손으로 관계를 맺어 주는것
- 자손은 조상의 모든 멤버를 상속 받는다.
2. 클래스간의 관계 - 상속관계
- 공통부분은 조상에서 관리, 개별부분은 자손에서 관리
- 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다.
3. 클래스간의 관계 - 포함관계
- 한 클래스의 멤버 변수로 다른 클래스를 선언하는 것
- 작은 단위의 클래스를 먼저 만들고, 이 들을 조합해서 하나의 커다란 클래스를 만든다.
4. 단일 상속
- java는 단일 상속만을 허용한다 (C++은 다중상속 허용)
- 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다.
5. Object클래스 - 모든 클래스의 최고조상
- 조상이 없는 클래스는 자동적으로 Object클래스를 상속받게 된다.
- 상속계층도의 최상위에는 Object클래스가 위치한다.
- 모든 클래스는 Object클래스에 정의된 11개의 메서드를 상속받는다.
- toString(), equals(Object obj), hasCode(), ……
6. 오버라이딩란?
- 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞네 변경하는것을 오버라이딩이라고 한다.
7. 오버라이딩의 조건
- 선언부가 같아야 한다.(이름, 매개변수, 리턴타입)
- 접근제어자를 좁은 범위로 변경할 수 없다.
- 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
- ※ 오버로딩과 오버라이딩의 차이
- 오버로딩 : 기존에 없는 새로운 메서드를 정의하는것
- 오버라이딩 : 상속받은 메서드의 내용을 변경하는 것
8. super - 참조변수
- this : 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어있음
- super : this와 같음, 조상의 멤버와 자신의 멤버를 구별하는데 사용
9. super() - 조상의 생성자
- 자손클래스의 인스턴스를 생성하면, 자손의 멤버와 조상의 멤버가 합쳐진 하나의 인스턴스가 생성된다.
- 조상의 멤버들도 초기화되어야 하기 때문에 자손의 생성자의 첫 문장에서 조상의 생성자를 호출해야 한다.