[java] 상속

자바는 객체 지향 프로그래밍 언어로, 상속이라는 개념을 제공합니다. 상속은 한 클래스가 다른 클래스의 속성과 메서드를 상속받는 것을 말합니다. 이를 통해 코드의 재사용성과 관리가 더욱 용이해집니다.

상속의 개념

상속은 다른 클래스의 멤버 변수와 메서드를 새로운 클래스에서 사용할 수 있도록 하는 개념입니다. 자식 클래스는 부모 클래스로부터 물려받은 멤버들을 사용할 수 있으며, 필요에 따라 추가적으로 멤버 변수와 메서드를 정의할 수도 있습니다.

자바에서는 extends 키워드를 사용하여 클래스를 상속받습니다. 예를 들어, Parent 클래스를 상속받는 Child 클래스를 만들고 싶다면 아래와 같이 작성할 수 있습니다:

class Parent {
    // 멤버 변수와 메서드 정의
}

class Child extends Parent {
    // 멤버 변수와 메서드 정의
}

상속의 장점

  1. 코드의 재사용성: 부모 클래스의 멤버를 상속받기 때문에 중복된 코드를 작성할 필요가 없습니다. 필요한 경우 상속받은 멤버를 오버라이딩하여 수정할 수도 있습니다.

  2. 유지 보수의 용이성: 부모 클래스의 멤버가 변경되는 경우, 해당 부분만 수정하면 모든 자식 클래스에 영향을 주게 됩니다. 이로써 코드의 변경 및 유지 보수가 더욱 쉬워집니다.

상속의 사용 예시

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() 메서드를 사용할 수 있습니다.

참고 자료