🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## **多态** 多态:是指对象的多态,一个对象的多种状态 ``` 比如:一只狗 是狗 ,是动物,是生物 比如 一个人 是人,是动物,是生物 比如 你在学校是学生,在家里是儿子,在公司是员工,在外面是老大 ``` 在Java中多态. ### **前提:** **1.必须有父子关系(必须有继承) 2.必须有方法的重写** ### **多态在Java中表现:** 1.父类类型 变量名 = new 子类类型(); 父类类型的变量指向了子类 ``` 例如:public class Animal{} public class Dog extends Animal{} public class BigYellowDog extends Dog{} 代码体现 Dog d = new Dog(); Animal an = new Dog(); 例,多态形式创建一个大黄狗对象 Dog d = new BigYellowDog(); 2.接口类型 变量名= new 实现类(); USbInterface mm = new Mouse(); USEBIterface bb = new keyBoard(); ``` ### **多态中注意事项** ``` 1.使用多态调用成员变量 编译时,看父类的左边 运行时,还是看父类的左边 2使用多态调用成员方法 编译时看父类左边 运行时看子类,右边 ``` ### **多态的好处和弊端** 只能调用子父类共有的方法才能调用 好处:提供程序灵活性 弊端 不能调用子类特有的方法 案例 定义三个方法,喂猫.喂猪,喂狗 ### **总结:** ``` 父类类型的变量,可以接收任何一个子类的对象 调用方法的时候,编译看父类,运行时 运行的是传递过来的子类对象中的方法 ``` ### **案例** ~~~ //多态类 public class Duotai { public static void main(String[] args) { //Animal an = new Dog(); //System.out.println(an.age); //an.eat(); //猪吃饭 Pig pp =new Pig(); feedAnimal(pp); } public static void feedAnimal(Animal an){//Animal an = new Pig(); System.out.println("小宝贝,来吃饭"); an.eat(); } } ~~~ ~~~ //猪类继承动物吃饭 public class Pig extends Animal{ public void eat(){ System.out.println("猪猪吃饭了"); } } ~~~ ~~~ //动物抽象类 public abstract class Animal { public abstract void eat(); } ~~~