[Java] 상속 (inheritance)
by Roel Downey상속(inheritance)이란?
기존의 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것을 의미한다.
상속을 이용하면 기존에 정의되어 있는 클래스의 모든 필드와 메소드를 물려받아, 새로운 클래스를 생성할 수 있다.
이때 기존에 정의되어 있던 클래스를 부모 클래스(parent class) 또는 상위 클래스(super class), 기초 클래스(base class)라고도 한다.
그리고 상속을 통해 새롭게 작성되는 클래스를 자식 클래스(child class) 또는 하위 클래스(sub class), 파생 클래스(derived class)라고도 한다.
부모 클래스인 Animal : super Class
public class Animal {
String name;
public void setName(String name) {
this.name = name;
}
}
자식 클래스인 Dog : sub Class
public class Dog extends Animal {
public static void main(String[] args) {
Dog dog = new Dog();
dog.setName("poppy");
System.out.println(dog.name);
}
}
클래스를 상속을 위해서는 extends 라는 키워드를 사용한다.
상속의 장점
자바에서 클래스의 상속은 다음과 같은 장점을 가진다.
1. 기존에 작성된 클래스를 재활용할 수 있다.
2. 자식 클래스 설계 시 중복되는 멤버를 미리 부모 클래스에 작성해 놓으면, 자식 클래스에서는 해당 멤버를 작성하지 않아도 된다.
3. 클래스 간의 계층적 관계를 구성함으로써 다형성의 문법적 토대를 마련한다.
IS-A 관계
Dog 클래스는 Animal 클래스를 상속받았다. 즉, Dog는 Animal의 하위 개념이라고 할 수 있겠다. 이런 경우 Dog는 Animal에 포함되기 때문에 "개는 동물이다"라고 표현할 수 있다.
자바는 이러한 관계를 IS-A 관계라고 표현한다.
즉 "Dog is a Animal" 과 같이 말할 수 있는 관계를 IS-A 관계라고 한다.
'Java' 카테고리의 다른 글
[Java] final , static (0) | 2020.03.18 |
---|---|
[Java] Scanner 를 close() 했을때 illegalStateException (0) | 2020.03.17 |
[Java] 메소드 오버로딩(method overloading) (0) | 2020.03.13 |
[Java] 이클립스에서 JAR 파일 생성, Export 하기 (0) | 2020.03.13 |
[Java] 클래스(Class) 인스턴스(instance) 메소드(method) (0) | 2020.03.10 |
블로그의 정보
What doing?
Roel Downey