목록Java (181)
충분히 쌓여가는
단일 상속(Single Inheritance) java는 단일 상속만 허용한다 다중 상속 에러 예시 class TvDVD extends Tv, DVD { // 에러 발생 // ... } 다중 상속 문제점 TvDVD는 부모가 Tv와 DVD로 2개이다 Tv와 DVD에 void power() {}라는 메서드가 동시에 있을 경우 어떤 것을 상속 받아야하는지 알 수 없다 => 충돌 문제 [이름(power)이 같고 내용({ })이 다를 경우] 다중 상속 해결방법 1. 인터페이스 인터페이스의 다형성 2. 비중이 높은 클래스 하나만 상속관계로, 나머지는 포함관계로 한다 Tv 클래스가 비중이 높은 경우, Tv 클래스는 상속으로, DVD 클래스는 포함관계로 한다 (단, DVD가 가지고 있는 메서드를 호출해줘야 한다)
클래스로 작성하는데 있어 상속관계를 맺어 줄 것인지 포함관계를 맺어 줄 것인지 결정하는 것이 어려울 수 있다 상속관계: A는 B이다 포함관계: A는 B를 가지고 있다 이전 글에서 사용한 Circle의 예를 들어보면 Circle(원)이라는 클래스가 Point(점)을 가지고 있다가 더 자연스럽기 때문에 포함관계라고 할 수 있다(대부분의 경우에 포함관계) 상속 class MyPoint { int x; int y; } class Circle extends MyPoint { // 상속 int r; } public class InheritanceTest { public static void main(String[] args) { Circle c = new Circle(); c.x = 1; c.y = 2; c.r =..
포함(Composite) 클래스의 멤버로 참조변수를 선언하는 것 1번은 Point 클래스와 관계없음 2번은 Circle가 Point를 포함하는 관계 1번과 같이 해도 되지만 2번과 같이 해도됨 차라는 클래스를 만들때 엔진과 문같은 부품을 포함관계로 만들면 복잡도가 낮아지게 된다 class Car { Engine e = new Engine(); Door[] d = new Door[4]; } 코드 class MyPoint { int x; int y; } class Circle { // 포함 MyPoint p = new MyPoint(); int r; } public class InheritanceTest { public static void main(String[] args) { Circle c = new ..
상속(Inheritance) 기존의 클래스로 새로운 클래스를 작성하는 것(코드의 재사용) 두 클래스를 부모와 자식으로 관계를 맺어주는 것 class 자식클래스 extends 부모클래스 { // ... } class Parent { } class Child extends Parent { // ... } 자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화블럭 제외) 자손의 멤버 개수는 조상보다 적을 수 없다(=같거나 많다) class Parent { int age; } class Child extends Parent { } 자손의 변경은 조상에 영향을 미치지 않는다 class Parent { int age; } class Child extends Parent { void play() { System.out..