참고
p. 151~
- instanceof 연산자 : InstanceTest
다형성(Polymorphism)
- 여러가지 형태를 가질 수 있는 성질
- 부모타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다.
참조변수의 형변환
- 상속관계에서만 가능하다.
- 모든 참조 변수는 모든 클래스의 조상인 Object 클래스 타입으로 형변환 가능
- 변수에 저장된 값(주소)이 변환 되는 것은 아니다.
- 사용할 수 있는 멤버의 개수를 조절하기 위해 참조변수의 형변환을 하는 것
- 자식타입 -> 부모타입 : up-casting, 캐스트연산자 생략 가능
- 부모타입 -> 자식타입 : down-casting, 캐스트연산자 생략 불가
장점
- 공간을 압축하기때문에 데이터 저장에 편리하다
- DB의 1:1관계
instanceof 연산자
void doWork(Car c){
if(c instanceof FireCar){
FireCar fc = (FireCar)c;
}
}
- 참조변수가 참조하고 있는 인스턴스의 실제타입을 알아보기 위해 사용한다.
- 실제 인스턴스와 같은 타입의 참조변수로 형변환을 해야만 인스턴스의 모든 멤버들을 사용할 수 있다.
- 연산결과가 true이면 검사한 타입으로 형변환이 가능하다.
- 클래스멤버는 참조변수의 타입에 영향을 받는다. ★★
- 참조변수의 타입에 영향을 받지 않는 것은 인스턴스메서드 뿐이다. ★★
매개변수의 다형성
- p.157, ProductTest.java
- 메서드 하나로 편하게!
- 참조변수의 다형적인 특징은 매개변수에도 적용된다.
객체배열 Vector
- p.157-8, 200-201, ProductTest.java
Vector<클래스명> item = new Vector<클래스명>();
- 배열은 한번 크기를 정하면 변경할 수 없다. 이를 해결하기위해 만들어졌다.
- Vector 동적으로 크기가 관리되는 객체배열이다.
Vector의 메서드
- Vector()
- 10개의 객체를 저장할 수 있는 Vector객체를 만든다.
- 10개이상이 되면 자동적으로 10개씩 크기가 증가
- boolean add(Object o)
- Vector에 객체를 추가한다.
매개변수 1개짜리 2개짜리?
- boolean remove(Object o)
- boolean isEmpty()
- Object get(int index)
- index번째 객체를 가져온다.
- 반환타입: Object이므로 적절한 형변환 필요!
- int size()