[java] 클래스와 객체의 상속에 대해 설명해주세요.

클래스와 객체의 상속이란, 기존에 정의된 클래스를 기반으로 새로운 클래스를 만들어내는 개념입니다. 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.

상속을 이용하면 부모 클래스(상위 클래스)에 정의된 멤버 변수와 메서드를 자식 클래스(하위 클래스)에서 그대로 이용할 수 있습니다. 자식 클래스는 이렇게 상속 받은 변수와 메서드를 그대로 사용할 뿐만 아니라, 필요에 따라 해당 멤버를 재정의하여 자신에게 맞게 사용할 수도 있습니다.

다음은 상속의 기본적인 구조를 보여주는 예제 코드입니다.

// 부모 클래스
class Animal {
    protected String name;
    
    public void sound() {
        System.out.println("동물이 소리를 내고 있습니다.");
    }
}

// 자식 클래스
class Dog extends Animal {
    public Dog(String name) {
        this.name = name;
    }
    
    @Override
    public void sound() {
        System.out.println(name + "가 짖고 있습니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("멍멍이");
        dog.sound(); // "멍멍이가 짖고 있습니다." 출력
    }
}

위의 예제에서는 Animal 클래스를 정의하고 Dog 클래스가 Animal 클래스를 상속받았습니다. Dog 클래스는 name 멤버 변수를 상속받은 후, sound 메서드를 재정의하여 개에게 특화된 기능을 추가하였습니다.

이처럼 상속을 통해 클래스 간에 계층 구조를 형성하고, 코드의 중복을 줄이며, 확장 가능한 프로그램을 작성할 수 있습니다. Java에서는 단일 상속만을 지원하므로, 하나의 클래스가 여러 클래스로부터 상속받을 수 없습니다. 그러나 인터페이스를 통해 다중 상속과 유사한 효과를 얻을 수 있습니다.

보다 자세한 사항은 Java 공식 문서Java Tutorial을 참고하시기 바랍니다.