- 조상의 변경은 자손에 영향을 미치지만, 자손의 변경은 조상에 아무런 영향을 미치지 않는다.
- extends : 부모 클래스를 '확장'하여 자식 클래스를 생성한다는 의미
- '하위 클래스 is a 상위 클래스' 관계가 성립할 경우에만 상속을 사용하자.
- 오버라이딩의 조건
이름, 매개변수 개수와 타입, 리턴 타입 동일 - 자식 메소드의 접근 범위는 부모보다 같거나 더 넓어야 함.
→ 부모(public)이면 자신은 public만 됨. - JDK 1.5부터 리턴타입 간 상속관계가 있는 경우 오버라이딩으로 간주
→ 부모 public Object test() {..}
자식 public String test() {..} // 이때도 오버라이딩으로 간주하며 자식 test() 호출 시 String 리턴함 - Class나 Method 선언부에 final을 붙이면 상속/오버라이딩 못하게 할 수 있다.
- Object 클래스의 메소드들
- equals()
- 참조변수 값(객체의 주소)를 비교하여 같으면 true
- 주소 비교가 아닌 내용을 비교하려면 override 필요 - toString()
- 내용은 '클래스이름@hashcode'
- Primitive type인 경우 String으로 변환하려면 Wrapper Class의 toString()을 이용한다. - 추상 클래스
- body가 없는 메소드를 포함한 클래스
- abstract 메소드가 없어도 abstract class 선언가능
- 객체 생성은 안되나 reference 변수 타입으로 사용 가능 : Appliance appl = new Radio(); // Appliance가 abstract class
- 장점 : 일관된 인터페이스. 꼭 필요한 기능 강제(공통적이지만 자식클래스에 특수화되는 기능) - 추상 메소드 - 몸체{}가 없는 메소드