1. 타입변환과 다형성
○ 부모클래스로 타입변환 허용
: 즉, Tire tire = new MyTire(); / Tire tire1 = new YourTire(); 처럼
Tire를 상속받은 자식클래스를 생성하면서 부모클래스로 타입변환 가능
2. 상속, 다형성과 JVM 동작절차
○ 필드의 다형성(Polymorphism variable)
○ 왜 부모타입으로 사용하니?
- 다형성을 구현하기 위해 사용한다.
- 즉, 필드 타입은 변함없지만 실행 도중 갈래길에서 실행결과가 달라질 수 있다.
○ 위의 Car Class를 배열로 관리하기
- class Car{ Tire[] tires={new Tire("FR", 6), new Tire("FL", 6), new Tire("BR", 6), new Tire("BL", 6)};}
○ 매개변수의 다형성
- run(Object o);
- run(Shape s);
- run(Component c);
LINE 1: Driver d = new Driver();
LINE 2: Bus b = new Bus();
LINE 3: Taxi t = new Taxi();
public void drive(Vehicle v){//오류 미발생
v.run();
}
public void drive(Bus v){//Line 3 컴파일 오류
v.run();
}
3. Abstract
○ 추상(Abstract): 공통 특성 추출
- instance 생성 불가
- extends 뒤에만 가능
○ 추상(Abstract)클래스 용도
1. 용도에 맞는 클래스의 필드와 메소드 통일
2. 클래스 작성시간 절약
○ 추상(Abstract)클래스 선언
public abstract class Phone{
...
}
○ 추상 메소드 선언
public abstract class Animal{
public abstract void sound();
}
○ 추상 메소드 오버라이딩
@Override
public void sound(){ //"멍멍";};
댓글 없음:
댓글 쓰기