JAVA/상속과 다형성

다형성

별초롱언니 2025. 5. 12. 15:04

다향성은 객체지향언어에서 객체의 자료형을 변경하는 것을 말합니다. 

1. 다향성이란 ? 

다향성은 사전적 의미로는 '여러 형태를 가지는 성질'을 뜻합니다. 

객체지향 개념에서 다향성은 '한 가지 타입이 여러 가지 형태의 인스턴스를 가질 수 있다'라는 의미입니다. 

특히, 부모 타입 변수에는 모든 자식 인스턴스들이 대입될 수 있는데, 이 점은 객체지향언어의 중요한 특징 중의 하나입니다. 

package chapter07;

public class exam51 {

	public static void main(String[] args) {
		Lion2 lion1 = new Lion2();
		ZooKeeper2 james = new ZooKeeper2();
		james.feed(lion1);
	}

}
package chapter07;

public class exam51_Animal {
	void breath() {
		System.out.println("숨쉬기");
	}
}

class Lion2 extends exam51_Animal {
	public String toString() {
		return "사자";
	}
}


class ZooKeeper2 {
	void feed (Lion2 lion) {
		System.out.println(lion + "에게 고기 주기");
	}
}


 

package chapter07;

public class exam52 {

	public static void main(String[] args) {
		Lion3 lion1 = new Lion3();
		ZooKeeper3 james = new ZooKeeper3();
		james.feed(lion1);
		
		Rabbit rabbit1 = new Rabbit();
		james.feed(rabbit1);
		Monkey monkey1 = new Monkey();
		james.feed(monkey1);
	}	

}
package chapter07;

public class exam52_Animal {
	void breath() {
		System.out.println("숨쉬기");
	}
}

class Lion3 extends exam52_Animal {
	public String toString() {
		return "사자";
	}
}

class Rabbit extends exam52_Animal {
	public String toString() {
		return "토끼";
	}
}

class Monkey extends exam52_Animal {
	public String toString() {
		return "원숭이";
	}
}

class ZooKeeper3 {
	void feed (Lion3 lion) {
		System.out.println(lion + "에게 먹이주기");
	}
	void feed (Rabbit rabbit) {
		System.out.println(rabbit + "에게 먹이주기");
	}
	void feed (Monkey monkey) {
		System.out.println(monkey + "에게 먹이주기");
	}
}


package chapter07;

public class exam53 {

	public static void main(String[] args) {
		exam53_Animal lion1 = new Lion1();
		ZooKeeper1 james = new ZooKeeper1();
		james.feed(lion1);
		exam53_Animal rabbit1 = new Rabbit1();
		james.feed(rabbit1);
		exam53_Animal monkey1 = new Monkey1();
		james.feed(monkey1);
	}

}
package chapter07;

public class exam53_Animal {
	void breath() {
		System.out.println("숨쉬기");
	}
}

class Lion1 extends exam53_Animal {
	public String toString() {
		return "사자";
	}
}

class Rabbit1 extends exam53_Animal {
	public String toString() {
		return "토끼";
	}
}

class Monkey1 extends exam53_Animal {
	public String toString() {
		return "원숭이";
	}
}

class ZooKeeper1 {
	void feed(exam53_Animal animal) {
		System.out.println(animal + "에게 먹이주기");
	}
}

 

** 다형성 → 부모타입 or 자신타입 **

** 문제점 : 만약 부모가 가지고 있지않는 함수 호출시 에러발생 **

'JAVA > 상속과 다형성' 카테고리의 다른 글

제어자  (0) 2025.05.08
상속과 생성자  (0) 2025.05.08
오버라이딩  (0) 2025.05.08
상속이란?  (0) 2025.05.08