상속이란?

  • 기존의 클래스를 재사용하는 방식 중의 하나입니다.

재사용을 하면 장점은?

  • 코드를 재사용하면, 코드와 클래스가 많아질수록 관리가 용이하다는 장점이 있습니다.
  • 변경사항만 코드로 작성하므로 상대적으로 적은 양의 코드를 작성할 수 있게 됩니다.

상속의 특징

  • 부모 클래스로에서 정의된 필드와 메소드를 물려 받습니다.
  • 새로운 필드와 메소드를 추가할 수 있습니다.
  • 부모 클래스스에서 물려받은 메소드를 수정할 수 있습니다.

상속의 형식

  • 상속은 extends를 이용하여 사용할 수 있습니다.
class Animal{}
class Dog extends Animal{} //Animal를 상속받은 Dog
class Cat extends Animal{} //Animal를 상속받은 Cat

  • 그림에서 Animal 는 부모 클래스, 조상 클래스라고 부릅니다. Dog, Cat 클래스는 자식 클래스 , 자손 클래스라고 부릅니다.
  • 코드로 한번 보겠습니다.
    String name;

    public void cry() {
        System.out.println(name + " is crying.");
    }
}

class Dog extends Animal {

    Dog(String name) {
        this.name = name;
    }

    public void swim() {
        System.out.println(name + " is swimming!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("코코");
        dog.cry();
        dog.swim();
        
        Animal dog2 = dog;
        dog2.cry();
//        dog2.swim(); // compile error
    }
}

-자식(Dog) 객체는 자식(Dog) 타입으로 선언된 변수에도 할당할 수 있고, 부모(Animal) 타입으로 선언된 변수에도 할당할 수 있습니다. 단, 부모(Animal) 타입의 변수로 사용할 때는, 실제 객체를 만들(new) 때 사용한 자식(Dog) 타입에 있는 함수 (여기서는 swim())을 호출할 수 없습니다. 컴파일 에러입니다.

👉 참고로, 상속을 받을 때 여러 클래스를 상속받을 수는 없습니다! 오직 하나의 클래스만을 상속받을 수 있습니다.

복사했습니다!