Java面试题多态是编译时行为还是运行时行为?

Posted 王六六的IT日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题多态是编译时行为还是运行时行为?相关的知识,希望对你有一定的参考价值。

面试题:多态是编译时行为还是运行时行为?

证明如下:

class Animal  {
 
	protected void eat() {
		System.out.println("animal eat food");
	}
}

class Cat  extends Animal  {
 
	protected void eat() {
		System.out.println("cat eat fish");
	}
}

class Dog  extends Animal  {
 
	public void eat() {
		System.out.println("Dog eat bone");

	}

}

class Sheep  extends Animal  {
 

	public void eat() {
		System.out.println("Sheep eat grass");

	}

 
}

public class InterviewTest {

	public static Animal  getInstance(int key) {
		switch (key) {
		case 0:
			return new Cat ();
		case 1:
			return new Dog ();
		default:
			return new Sheep ();
		}

	}

	public static void main(String[] args) {
		int key = new Random().nextInt(3);

		System.out.println(key);

		Animal  animal = getInstance(key);
		
		animal.eat();
		 
	}

}

以上是关于Java面试题多态是编译时行为还是运行时行为?的主要内容,如果未能解决你的问题,请参考以下文章

4.7 多态

反射机制-java面试题

Java多态(注意事项)

nameof() 到底是编译时还是运行时行为?

Java Review (十面向对象----多态)

Java Review (十面向对象----多态)