JAVA

[JAVA] 다형성(polymorphism)

멍정 2023. 9. 18. 13:30

멍하

돌아온 자바공부 6일차

 

21강 다형성

https://youtu.be/9DOaEZS3exM

다형성 : 다양한 형태의 성질을 가질 수 있다.

// 예를 들어 a메소드로 선언하면 a 클래스를 상속받는 b클래스의 메소드도 사용할 수 있다?

 

fruit class를 생성하여 과일에 대한 속성을 지정해주고 Peach와 Banana class를 만들어 fruit를 상속받는다

//fruit.java
public class Fruit {
	String name;
	int price;
	int fresh;
	
	public void show() {
		System.out.println("이름 : " + name);
		System.out.println("가격 : " + price);
		System.out.println("신선도 : " + fresh);
	}

}

peach class에 peach 메소드를 생성해주고 banana도 동일하게 작업해준다.

//Peach.java
public class Peach extends Fruit{

	public Peach() {
		price = 1500;
		name = "복숭아";
		fresh = 75;
	}
}
//Banana.java
public class Banana extends Fruit{
	
	public Banana() {
		price = 1000;
		name = "바나나";
		fresh = 80;
	}
}

main에서 scanner로 바나나를 고를지 복숭아를 고를지 입력받은 후, 입력받은 과일 메소드를 fruit에 대입해준다.

//Main.java
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("바나나 : 1, 복숭아 2 ?");
		int input = scanner.nextInt();
		Fruit fruit;//자식클래스의 인스턴스 변수를 대입
		
		if(input == 1)
		{
			fruit = new Banana();
			fruit.show();
		}
		else if (input == 2) {
			fruit = new Peach();
			fruit.show();
		}
	}

}

하위 클래스의 객체를 참조할 수 있다!