본문 바로가기
Program/Java

[Java] 동적 메소드 호출

by C_Meaning 2021. 7. 12.
728x90
동적메소드란?

오버라이드된 메소드 호출이 Comfile 시간이 아닌 실행(Execute) 시간에 결정되는 메커니즘을 의미함.

 

아래의 코드는 오버라이드된 메소드가 부모 클래스 참조를 통하여 호출되는 경우에 객체의 타입에 따라서 서로 다른 메소드가 호출되게 하는 메커니즘을 반영했다.

 

객체의 실제 타입이 호출되는 메소드를 결정한다.

 

package class_object;

class Animal {
	void Sound() {
		System.out.println("Animal은 동물의 소리 ()");
	}
}

class Cat extends Animal {
	@Override
	void Sound() {
		System.out.println("Cat은 야용야옹 ()");
	}
}

class Dog extends Animal {
	@Override
	void Sound() {
		System.out.println("Dog은 멍멍 ()");
	}
}

public class DynamicCallTest {

	public static void main(String[] args) {
		
		Cat cat = new Cat();
		Dog dog = new Dog();
		
		Animal obj;
		
		obj = new Animal(); 
		obj.Sound(); //Animal 클래스의 메서드 호출
		
		obj = cat;
		obj.Sound(); //자식 클래스 Cat의 객체를 참조시킴. Cat의 sound가 나옴
		
		obj = dog;
		obj.Sound(); //자식 클래스 Dog의 객체를 참조시킴. Dog의 sound가 나옴
		
	}

}

 

참조된 객체에 따라 실행되는 메소드가 결정된다.

728x90

댓글