ch7-29,30 여러 종류의 객체를 배열로 다루기
- 조상타입의 배열에 자손들의 객체를 담을 수 있다
- 다형성의 장점: 1. 다형적 매개변수, 2. 하나의 배열에 여러 종류의 객체 저장 가능
-->왼쪽을 묶어서 배열로 만든 게 오른쪽이다. 둘 이 같은 의미임.
- Vector 가변 배열 기능하는 클래스. Object배열을 멤버로 가지고 있다. 여기에 모든 종류의 객체 저장 가능함
---------------------------------------
ch7-31,32
추상 클래스, 추상 메서드
추상 클래스(abstract class)
- 미완성 설계도. 미완성 메서드를 갖고 있는 클래스
- 다른 클래스 작성에 도움을 주기 위한 것. 인스턴스 생성 불가
- 상속을 통해 추상 메서드를 완성해야 인스턴스 생성가능
---------------------
추상 메서드(abstract method)
- 미완성 메서드. 구현부(몸통 {})가 없는 메서드
그럼 추상메서드는 언제 쓰는가? --> 꼭 필요하지만 자손마다 다르게 구현될 것으로 예상되는 경우
상속을 통해 자손을 완성한 후, 자손 객체 생성을 해야 호출 가능
--> 여기서 Player는 리모콘일 뿐이다. 실제로 가리키는 객체는 AudioPlayer다.
리모콘이 아무리 추상클래스인 Player라고 해도 실제로 연결되어 있는 건 구현되어 있는 AudioPlayer의 메서드이다.
------------------------------------
<ch7-33,34 추상 클래스의 작성 1>
- 여러 클래스에 공통적으로 사용될 수 있는 추상클래스를 바로 작성하거나
기존 클래스의 공통 부분을 뽑아서 추상클래스를 만든다
--> 해병, 탱크, 비행기는 선언부는 일치하지만 몸통{}은 다를 것이다. 그러니 일치하는 부분만 따로 뽑아내는 것.
공통 부분을 추출해 Unit클래스로 정의
참조변수가 나뉘어져 있는걸 합친게 객체 배열이다
객체배열 --> 참조변수 묶은 것
-->리모콘에 move가 없다는 말이다
추상클래스를 사용해서라도 move를 Unit에 넣어준 것 . 리모콘에서 사용할 수 있도록
------------------------------------------
추상클래스의 작성2
- 추상화 <--> 구체화
- 추상화된 코드는 구체화된 코드보다 유연하다. 변경에 유리
구체적으로 적지않고 애매하게 써놓으면 변경에 유리하다. 구체적으로 적어두면 캘린더 사용한 부분을 전부 다 고쳐야 하다.
하지만 애매하게 적어두면 이 메서드 하나만 바꾸면 된다. 메서드가 호출된 곳을 바꿀 필요가 없다
추상화는 다형성과 관계가 깊다.