상속
현실에서 상속은 부모가 자식에게 물려주는 행위를 말한다. 자식은 상속을 통해서 부모가 물려준 것을 자연스럽게 이용할 수 있다.
객체 지향 프로그램에서도 부모 클래스의 멤버를 자식 클래스에게 물려줄 수 있다. 프로그램에서는 부모클래스를 상위클래스라고 부르기도하고, 자식 클래스를 하위클래스라고 부른다.
상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 코드의 중복을 줄여준다.
자기만의 고유한 필드, 메서드하고 상위클래스에서 물려받는 것이 존재한다.
상속을 해도 부모클래스의 모든 필드와 메소드들을 물려받는 것은 아니다. 부모 클래스에서 private 접근제한을 갖는 필드와 메서드는 상속 대상에서 제외된다. 그리고 부모 클래스와 자식 클래스가 다른 패키지가 존재한다면 default 접근제한을 갖는 필드와 메서드도 상속 대상에서 제외된다.
상속을 이용하면 클래스의 수정을 최소화 시킬 수 있다. 부모 클래스의 수정으로 모든 자식 클래스들의 수정 효과를 자가져오기 때문에 유지 보수 시간을 최소화시켜준다.
상속하고자 할 때 IS A 관계가 성립이 되는지 확인해야 한다.
Account 클래스는 Person 클래스에 IS A관계가 성립되지 않는다. Customer is a person, Employee is a person 은 관계가 성립이 된다. 그렇기 때문에 상속을 하기 위해서는 두번째 방법으로 Has a 관계가 성립되어야한다.
다형성
다형성은 같은 타입이지만 실행 결과가 다양한 객체가 이용할 수 있는 성질을 말한다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해준다.
부모타입에는 모든 자식 객체가 대입될 수 있고(upcasting) 인터페이스 타입에는 모든 구현객체가 대입될 수 있다.
예를들어 자동차를 설계할 때 타이어 인터페이스 타입을 적용했다면 인터페이스를 구현한 실제 타이어들은 어떤 것이든 상관없이 대입이 구능하다.
'java' 카테고리의 다른 글
java_8_상속(문제) (0) | 2021.10.19 |
---|---|
java_8_ 상속 ( super와 this & 오버라이딩 ) (0) | 2021.10.19 |
java_7_싱글톤 (0) | 2021.10.18 |
java_7_예약어 (접근제어자) & 캡슐화 (0) | 2021.10.18 |
java_6_ static (0) | 2021.10.14 |