부모(자식)클래스의 결정에 따라 다양한(메소드 선택결정) 선택을 할 수 있다.
다형성의 대상: 상속된 인스턴스의 메소드
다형성의 필요성: 선택의 범위가 넓다.
대게 부모클래스가 자식클래스를 선택해 사용
//부모 클래스
class Car_Class {
String name;
int speed;
void run() {
System.out.println("자동차 종류 : " + name + " / 자동차 속도: " + speed);
}
}
//Bus 이름의 자식 클래스
class Bus_Class extends Car_Class {
Bus_Class(){
name="버스";
speed = 60;
}
}
//Truk 이름의 자식 클래스
class Truk_Class extends Car_Class {
Truk_Class(){
name="트럭";
speed=50;
}
}
public class polymorphism_01 {
public static void main(String[] args) {
//부모클래스가 자식의 속성과 메소드들을 선택해 사용
//현재 자식이 두개 Bus, Truk
Car_Class car1 = new Bus_Class();
car1.run();
Car_Class car2 = new Truk_Class();
car2.run();
}
}
List<Integer> list = new ArrayList<Integer>(); //이것도 다형성의 예시 중 하나
만약 자식이 부모클래스에 있는걸 사용하고 싶은 경우는 형변환을 통해 해야한다
//부모 클래스
class Car_Class {
String name;
int speed;
void run() {
System.out.println("자동차 종류 : " + name + " / 자동차 속도: " + speed);
}
}
//Bus 이름의 자식 클래스
class Bus_Class extends Car_Class {
Bus_Class(){
name="버스";
speed = 60;
}
}
//Truk 이름의 자식 클래스
class Truk_Class extends Car_Class {
Truk_Class(){
name="트럭";
speed=50;
}
}
public class polymorphism_01 {
public static void main(String[] args) {
//자식클래스가 부모클래스에 있는 기능을 사용하고 싶으면
//형변환을 통해 이용
//부모클래스 생성
Car_Class car = new Car_Class();
//자식 클래스가 부모클래스 안에 메소드를 사용하고 싶어 형변환 진행
Bus_Class bus = (Bus_Class) car;
}
}