자바는 객체 지향 프로그래밍 언어로, 상속이라는 개념을 제공합니다. 상속은 한 클래스가 다른 클래스의 속성과 메서드를 상속받는 것을 말합니다. 이를 통해 코드의 재사용성과 관리가 더욱 용이해집니다.
상속의 개념
상속은 다른 클래스의 멤버 변수와 메서드를 새로운 클래스에서 사용할 수 있도록 하는 개념입니다. 자식 클래스는 부모 클래스로부터 물려받은 멤버들을 사용할 수 있으며, 필요에 따라 추가적으로 멤버 변수와 메서드를 정의할 수도 있습니다.
자바에서는 extends
키워드를 사용하여 클래스를 상속받습니다. 예를 들어, Parent
클래스를 상속받는 Child
클래스를 만들고 싶다면 아래와 같이 작성할 수 있습니다:
class Parent {
// 멤버 변수와 메서드 정의
}
class Child extends Parent {
// 멤버 변수와 메서드 정의
}
상속의 장점
-
코드의 재사용성: 부모 클래스의 멤버를 상속받기 때문에 중복된 코드를 작성할 필요가 없습니다. 필요한 경우 상속받은 멤버를 오버라이딩하여 수정할 수도 있습니다.
-
유지 보수의 용이성: 부모 클래스의 멤버가 변경되는 경우, 해당 부분만 수정하면 모든 자식 클래스에 영향을 주게 됩니다. 이로써 코드의 변경 및 유지 보수가 더욱 쉬워집니다.
상속의 사용 예시
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void eat() {
System.out.println(name + " is eating.");
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
public void bark() {
System.out.println("Woof! Woof!");
}
}
위의 예시에서는 Animal
클래스를 부모 클래스로 정의하고, Dog
클래스가 이를 상속받습니다. Animal
클래스는 name
멤버 변수와 eat()
메서드를 가지며, Dog
클래스는 bark()
메서드를 추가로 정의합니다.
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog("Max");
myDog.eat(); // "Max is eating."
myDog.bark(); // "Woof! Woof!"
}
}
main()
메서드에서 Dog
클래스의 인스턴스를 생성하고, eat()
메서드와 bark()
메서드를 호출하는 예시입니다. 이 때, Dog
클래스는 Animal
클래스에서 상속받은 eat()
메서드를 사용할 수 있습니다.