Java教程

Java——面向对象(十五)——多态性

本文主要是介绍Java——面向对象(十五)——多态性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、多态性:可以理解为一个事物的多种形态,是运行时行为!

2、何为多态性:

对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)

//person为父类,man和woman为子类
Person p2 = new Man():

Person p3 = new Woman():

3、 多态的使用:虚拟方法调用

虚拟方法调用:当调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法

有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。

编译看左边,运行看右边(等号左右两边的对象)

4、多态性的使用前提: 

①:类的继承关系

②:方法的重写

5、对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)

测试多态性是运行时行为的例子:

运行时行为:只有运行后才知道结果

package com.atguigu.test;

import java.util.Random;

//面试题:多态是编译时行为还是运行时行为?
//证明如下:
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——面向对象(十五)——多态性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!