자바 상속의 기본개념
상속을 통해 하나의 클래스가 다른 클래스의 속성과 메소드를 물려받을 수 있다.
자바에서 상속을 사용하려면 상속받으려는 클래스에 extends
라는 키워드를 사용하면 된다.
class Animal {
void makeSound() {
System.out.println("Some generic animal sound");
}
}
class Dog extends Animal {
// Dog 클래스는 Animal 클래스의 모든 속성과 메서드를 이어받는다.
void makeSound() {
System.out.println("Woof");
}
}
메소드 오버라이딩(Overriding)
여기서 Dog 클래스는 Animal 클래스를 상속받았다.
Animal 클래스가 가진 makeSound() 소리내기
라는 메소드 특성을 Dog 클래스가 물려받게 되는 것이다.
Dog 클래스의 makeSound()를 보게되면 출력되는 메세지가 다른데, 이는 동물마다 makeSound
를 하지만, 각각이 내는 소리가 달라서 변형이 일어난 거라고 생각하면 된다.
이를 메소드 오버라이딩(Overriding)
이라고 한다.
Dog는 Animal이다
라는 관계는 성립한다.
하지만 Animal은 Dog이다
라는 관계는 성립하지 않는다.
코드를 읽을 때 관계가 성립하는 지 여부가 상속에 있어서 가장 중요한 요인이기 때문에 코드를 설계할 때 주의해야한다.