상속:
상속(Inheritance)이란 말 그대로 '부모의 유산을 물려받다'를 의미하고 이는 '자식이 부모의 것을 가진다'라고 할 수 있다.
객체 지향 프로그래밍에서도 이와 비슷한 개념으로 쓰이는데, 여기에서는 부모 클래스에 정의된 멤버를 자식 클래스가 물려받는 것을 말한다.
즉, 상속을 통해 기존에 있던 클래스(부모 클래스)를 이용하여 새로운 클래스를 만들 수 있다.
이는, 기존의 것을 이용하여 만들어내기 때문에 적은 양의 코드로 새로운 클래스를 만들어 낼 수 있다.
상속을 해주는 부모 클래스는 상위 클래스(슈퍼 클래스, Super Class) 또는 기반 클래스(베이스 클래스, Base Class)라 하며, 상속을 받는 자식 클래스를 하위 클래스(서브 클래스, Sub Class), 또는 파생 클래스(유도 클래스, derived class)라고 한다.
만약, 자바에서 상속을 받게 해 주려면, 새로운 클래스 이름 뒤에 extends와 상속받고자 하는 클래스를 입력하면 된다.
특징 :
● 다중 상속이 불가능합니다. 즉, 2개 이상의 클래스를 한꺼번에 상속할 수 없다.
● 부모의 생성자는 상속이 되지 않는다.
● 부모 클래스가 가진 멤버변수와 메서드를 모두 상속받는다.
● 부모 클래스 내에서 멤버 변수 또는 메소드가 private 접근 제한자를 사용하면 멤버 변수는 상속받으나 바로 접근이 불가능하며, 메서드는 상속되지 않는다.
● static 메서드 또는 변수도 상속이 된다.
● 동일한 이름의 변수가 부모 클래스와 자식 클래스에 둘 다 존재할 경우 부모 클래스의 변수는 가려진다.
구성:
포지션(composition: 구성) 기법을 사용하면 된다. 새로운 클래스에 기존 클래스 객체를 참조할 수 있도록 private 필드 하나를 두는 것이다. 이런 설계 기법을 구성이라고 하며, 기존 클래스는 새로운 클래스의 일부가 된다. 새로운 클래스 메서드에서 기존 클래스의 메서드들 가운데 필요한 것을 호출해서 결과를 반환하면 된다.
이러한 구현 기법을 전달(forwarding)이라고 하며, 전달 기법을 구현한 메서드를 전달 메서드(forwarding method)라고 부른다.