1.多态的概念
多态:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。(不同动物去完成喊叫行为,喊叫的状态(声音)不同) 同一种行为,不同子类呈现出来的状态是不同的。(比如下面举例的喊叫,Dog这个子类呈现出来的状态是 汪汪叫)
Ps:多态跟属性无关,多态指的是方法的多态,而不是属性的多态。
2.代码实现(女孩和动物玩)
在test07这个包下,分别创建 Animal-父类,Cat-子类,Dog-子类,Test-测试类
Animal.java中的代码:
package com.test07; public class Animal{ //喊叫 public void shout(){ System.out.println("动物-喊叫-。。。"); } }
Girl.java中的代码:
package com.test07; public class Girl { public void play(Animal an){ an.shout(); } }
Dog.java中的代码:
package com.test07; public class Dog extends Animal{ //喊叫 public void shout(){//子类shout方法对父类shout方法不满意,相当于进行了方法的重写 System.out.println("狗叫-汪汪汪"); } //看家护院 public void guard(){ System.out.println("狗-可以看家护院"); } }
Cat.java中的代码:
package com.test07; public class Cat extends Animal{ //喊叫: public void shout(){//子类shout方法对父类shout方法不满意,相当于进行了方法的重写 System.out.println("猫叫-喵喵喵"); } //挠人 public void scratch(){ System.out.println("猫-可以挠人"); } }
Test.java中的代码:
package com.test07; public class Test { public static void main(String[] args) { Girl g = new Girl(); //小女孩和动物玩 Animal an;//定义一个动物,这个动物未知 Cat c = new Cat();//具体的猫 an = c;//让动物是一只具体的猫 //合成一句:Animal an = new Cat(); g.play(an); } }
运行Test.java的结果:
3.多态的三要素和好处
多态的三要素:继承,重写,父类引用指向子类对象
多态的好处:提高代码扩展性