-
학원 DAY 16. 상속과 구현기록 2022. 10. 2. 21:20
< 상속 >
* 부모클래스의 공개된 속성과 공개된 기능을 물려받는다.
* 자식클래스를 빠르게 정의할 수 있다.
* 같은 부모클래스를 상속받은 자식클래스는 전부 같은 부모타입으로 클래스 형변환이 가능하다.
* 상속은 같은 타입을 가지는 하위 클래스를 여러 개 정의하는 것이다.
* 상속은 클래스와 클래스의 결합도가 가장 높은 결합을 만든다.
* 상속은 부모의 속성과 기능을 전부 물려받는다. (선별해서 상속받는게 불가능)
* 클래스를 작성할 때 상속관계는 되도록 피해야 하는 관계다.
< 구현(인터페이스를 구현하는 것) >
* 사용방법이 같은 하위 구현클래스를 작성하게 한다.
* 인터페이스를 이용한 구현은 클래스와 클래스의 결합도를 느슨하게 만든다.
* 구현은 필요한 사양이 정의된 인터페이스만 구현할 수 있다. (인터페이스 분리원칙)
* 하위 구현 클래스의 구현부담을 줄이기 위해서 추상 클래스를 정의하고, 추상 클래스를 상속받아서 하위 구현 클래스를 작성하는 경우가 많다. (상속이 주로 사용되는 경우)
인터페이스에서 공통 기능들은 추상 클래스에서 구현하고 개별 작업이 필요한 것들은 구현 클래스에서 작성한다.
* 구현도 상속과 마찬가지로 같은 인터페이스를 구현한 구현 클래스는 전부 같은 인터페이스 타입으로 클래스 형변환이 가능하다.
* 하위클래스를 정의할 때는 상속보다 구현을 활용하는 것이 좋다.
< 다형성 >
* 같은 방법으로 실행하지만 참조하는 객체가 달라지면 실행결과가 다르게 발현되는 것
* 다형성이 발휘되기 위한 조건
- 객체를 참조하는 참조변수는 상위 클래스나 인터페이스 타입이어야 한다. (다양한 하위 클래스 타입의 객체를 참조할 수 있다.)
- 실제로 사용하는 객체를 직접 생성하지 않고 전달받는다.
- 실행하는 메소드는 메소드 재정의 관계에 있는 메소드여야 한다. (상위 타입의 객체를 참조하고 있어도 실제 생성된 하위객체의 재정의된 메소드를 실행할 수 있다.)
- 참조변수가 참조하는 객체들은 모두 사용방법이 동일해야 한다.
- company가 사용하는 객체는 new로 직접 생성하면 해당 클래스만 받아야하니 직접 생성하지 않고 외부로부터 전달받는 것이 좋다.
'기록' 카테고리의 다른 글
학원 DAY 17. String 클래스 (0) 2022.10.03 학원 DAY 17. API, Object, 접근제한자 (0) 2022.10.02 학원 DAY 15. 추상화, 인터페이스, 추상클래스 (0) 2022.10.02 학원 DAY 14. 메소드 재정의(오버라이딩) (0) 2022.10.02 학원 DAY 14. 강제클래스 형변환 (0) 2022.10.02