상속(Inheritance)은 기존 클래스의 필드와 메서드를 물려받아 새로운 클래스를 만드는 것이다.
기존 클래스의 기능을 그대로 재사용할 수 있기 때문에 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있다.
즉,
기존 클래스의 필드와 메서드를 물려받아 새로운 클래스를 만드는 것
이라고 이해하면 된다.
상속 관계에서는 두 클래스를 다음과 같이 부른다.
Java에서는 extends 키워드를 사용하여 상속받을 수 있다.
class Animal {
String name;
void eat() {
System.out.println("먹습니다.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
Dog 클래스는 Animal 클래스를 상속받았기 때문에
Animal의 name 필드와 eat() 메서드를 사용할 수 있다.
또한 Dog만의 새로운 메서드인 bark()도 추가할 수 있다.
상속을 사용하면 부모 클래스의 기능을 재사용할 수 있다.
class Animal {
void eat() {
System.out.println("먹습니다.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
Dog dog = new Dog();
dog.eat(); // 부모 클래스에서 상속받은 메서드
dog.bark(); // 자식 클래스에서 추가한 메서드
실행 결과:
먹습니다.
멍멍!
이처럼 자식 클래스는 부모 클래스의 기능을 사용할 수 있고, 필요한 기능을 추가할 수도 있다.
이미 만들어진 부모 클래스의 필드와 메서드를 다시 작성하지 않고 사용할 수 있다.
여러 클래스에서 공통적으로 사용하는 기능을 부모 클래스에 작성하면 중복 코드를 줄일 수 있다.
공통 기능을 부모 클래스에서 관리하기 때문에 수정이 필요한 경우 부모 클래스의 코드를 수정하면 된다.