1.상속, Inheritance
상속은 단어 그대로의 의미는 부모의 유산을 자녀가 상속하다. 라고 할 때 쓰이는데
Java에서는 다른 클래스의 기능을 그대로 이어받는, 변수와 메소드들을 그대로 사용 가능한 것을 말한다. 부모클래스의 선언 없이 메소드와
변수를 자식 클래스에서 사용 할 수 있다. 다른 말로는 일반화라고 하기도 한다.
상속을 사용하는 이유는 다른 사람의 코드를 가져다 쓰기 쉽고 코드의 중복을 피하기 쉽고
다른 사람의 코드를 가져다 쓴다면 내가 생각하지 못한 기술들을 활용할 수 있다.
하지만 앞에서 설명했던 접근제한자를 보면 private로 선언하게 되면 상속받아도 사용할 수 없게끔 할 수 있다.
그리고 C++에선 다중상속이 허용되지만 Java에서는 사용할 수 없다. 사용하기 위해선 클래스마다 하나씩 하나씩 상속하는 방법밖에 없다.
만약 자식클래스를 호출한다면 컴파일러는 우선 부모클래스를 호출 하고나서 자식 클래스를 호출하고 부모 클래스의 생성자는 생략한다.
그러므로 자식 클래스에서 부모 클래스의 생성자를 이용하기 위해 따로 명시를 해두어야 한다.
이제부터는 클래스 다이어그램도 예제와 같이 올리는데
꼭 클래스 다이어그램을 통해 클래스의 구조를 파악하는 방법을 확인하고 나서 예제를 살펴보자
예제는 다음과 같다.
package Chap05.exam03.superCtr; public class Parent { public String attr1; public int attr2; public Parent(String attr1, int attr2) { this.attr1 = attr1; this.attr2 = attr2; } }
package Chap05.exam03.superCtr; public class Child extends Parent { public String field; public Child(String attr1, int attr2, String field) { super(attr1, attr2); // 상속해준 부모 클래스에 생성자 인자값 전달 this.field = field; } }
package Chap05.exam03.superCtr; public class Main { public static void main(String[] args) { Child kid = new Child("널", 2147483647, null); System.out.println(kid.attr1); System.out.println(kid.attr2); System.out.println(kid.field); } }
'개념 및 코딩 > 05.상속' 카테고리의 다른 글
[JAVA]05-06.익명객체, 결합도 (0) | 2018.08.30 |
---|---|
[JAVA]05-05.추상클래스, 인터페이스 (0) | 2018.08.30 |
[JAVA]05-04.다형성 배열, 활용 (0) | 2018.08.29 |
[JAVA]05-03.다형성 (0) | 2018.08.29 |
[JAVA]05-02.오버라이드 (0) | 2018.08.27 |