다형성
java ·상속과 연관이 있는데, 수퍼클래스는 수퍼클래스를 extends한 모든 서브클래스의 객체를 받을 수 있다. 그 덕분에 수퍼클래스라는 타입하나로 각 서브클래스의 구현부를 호출할 수 있게된다.(다형성)
아래에 예시가 있다.
Animal animal = new Cat();
animal.sound(); // 야옹
animal은 Cat이 구현한 sound 함수를 호출한다. 그렇다면 강아지 울음소리를 듣고 싶으면 어떻게할까?
animal = new Dog();
animal.sound(); // 멍멍
이런식으로 바꾸면 animal의 타입을 변경시키지 않고 Dog가 구현한 sound함수를 호출할 수 있다.
이 부분은 꽤 중요하다. 코드 변경없이 객체를 주입시키는것만으로 결과를 바꿀 수 있기 때문에 유지보수에 매우 유리해진다.