상속
- (자식클래스의) 공통된 부분을 추출하여 부모클래스를 만드는 것
- 공통된 필드, 메서드를 가진 클래스를 만들고, 작성된 코드를 자식들이 물려받아 사용.
- 코드길이 감소, 코드 중복 제거, 재사용성 증가, 자식에 대한 일관된 규칙 제공
[일반 클래스] 상속
- 부모 클래스도 객체로 만들 수 있어야 하는경우
[추상 클래스] 상속
- 연관된 클래스의 공통점을 묶되, 부모클래스는 객체로 만들 수 없는 경우
- 일부 미완성 클래스(abstract 메소드 0개 이상 포함)
- EX) Animal 클래스 -> 동물 객체는 어떤 동물인가? eat(), breath()는 어떻게 수행되는가? -> 알 수 없음
- 하지만, 동물의 공통된 기능명은 알고 있음.
[인터페이스] 상속 : 접점
- 연관성이 낮거나 없는 클래스에게 공통된 기능을 제공할 때 사용.
- ex) 키보드, 마우스, 스캐너, 카메라, 기울기 센서(공통점:입력장치)
- 우연히도 입력이라는 기능을 가지고 있음! -> 각각의 용도는 다르지만 입력이라는 공통된 기능명이 있음.
- 입력이라는 접정!
- 모든 필드가 묵시적(암묵적) public static final -> ex) public static final double PI = 3.141592;
- (public static final) double PI = 3.141592; (묵시적)
- 모든 메서드가 묵시적으로 public abstract(추상메서드) => 같은 이름을 제공할 뿐이지, 상세한 기능 제공은 하지 않는다.
- ex) (public abstract) void input() //input이라는 이름을 자식에게 제공할뿐, 상세한 기능은 자식이 알아서 오버라이딩 해라! 그런데 추상메서드니까 오버라이딩 강제화