Polymorphism

codakcodak·2023년 7월 20일
0

Java

목록 보기
11/17
post-thumbnail

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.brand="기아";현재 sp2는 Car로서 참조하고 있기 때문에 SupserCar의 기능은 사용하지 못한다.
		 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();
	}
}
  • 조상을 파라미터로 처리한다면 객체의 타입에 따라 메서드를 만들 필요가 없어진다.
profile
숲을 보는 코더

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 좋은 글 감사합니다!

답글 달기