Polymorphism
하나의 객체가 많은 형을 가질 수 있는 성질
객체
class Car {
int price;
String color;
public void drive() {
System.out.println("주행합니다.");
}
}
class SuperCar extends Car{
String brand;
public void superDrive() {
System.out.println("매우 빠르게 주행합니다.");
}
}
public class Polymorphism {
public static void main(String[] args) {
SuperCar sp1=new SuperCar();
sp1.brand="삼성";
sp1.price=100000000;
sp1.color="yellow";
sp1.superDrive();
Car sp2=sp1;
sp2.drive();
}
}
- 상속관계에 있을 때 조상 클래스의 타입으로 자식 클래스 객체를 참조할 수 있다.
- 상위 클래스 타입으로 하위클래스를 받을 경우 메모리 상에 하위클래스가 올라가 있지만 사용가능한 범위는 상위 클래스 까지이다.
배열
class Car {
int price;
String color;
public void drive() {
System.out.println("주행합니다.");
}
public int get10() {
return 10;
}
}
class SuperCar extends Car{
String brand;
public void superDrive() {
System.out.println("매우 빠르게 주행합니다.");
}
}
public class Polymorphism {
public static void main(String[] args) {
Car[] cars=new Car[10];
cars[0]=new Car();
cars[1]=new SuperCar();
}
}
- 상속관계에 있는 다른 객체를 하나의 배열로 관리한다.
매개변수
class Car {
int price;
String color;
public void drive() {
System.out.println("주행합니다.");
}
}
class SuperCar extends Car{
String brand;
public void superDrive() {
System.out.println("매우 빠르게 주행합니다.");
}
}
public class Polymorphism {
public static void main(String[] args) {
printDrive(new SuperCar());
printDrive(new Car());
}
public static void printDrive(Car car) {
car.drive();
}
}
- 조상을 파라미터로 처리한다면 객체의 타입에 따라 메서드를 만들 필요가 없어진다.
정말 좋은 글 감사합니다!