面向对象编程
多态
认识多态
为什么是这样,因为就是这样规定的,多态是针对对象多态,而没有针对成员变量多态
packagecom.itheima.polymorphsm;publicclassTset{publicstaticvoidmain(String[]args){//目标:认识多态的代码//1.对象多态,行为多态Animala1=newWolf();a1.run();//狼跑的贼溜---方法:编译看左边,运行看右边System.out.println(a1.name);//动物---成员变量:编译看左边,运行也看左边Animala2=newTortoise();//乌龟跑的贼慢---方法:编译看左边,运行看右边a2.run();//动物---成员变量:编译看左边,运行也看左边System.out.println(a1.name);}}//--------------------分割线--------------packagecom.itheima.polymorphsm;publicclassTortoiseextendsAnimal{Stringname="乌龟";@Overridepublicvoidrun(){System.out.println("乌龟跑的贼慢");}}//--------------------分割线--------------packagecom.itheima.polymorphsm;publicclassAnimal{Stringname="动物";publicvoidrun(){System.out.println("动物会跑");}}//--------------------分割线--------------packagecom.itheima.polymorphsm;publicclassWolfextendsAnimal{Stringname="狼";@Overridepublicvoidrun(){Stringname="狼";System.out.println("狼跑的贼溜");}}多态的好处
packagecom.itheima.polymorphism2;publicclassTset{publicstaticvoidmain(String[]args){//目标:认识多态的代码//1.多态的好处 1.右边对象是解耦合的Animala1=newTortoise();a1.run();//a1.shrinkHead();//报错,多态下不能调用子类独有功能Wolfw=newWolf();go(w);Tortoiset=newTortoise();go(t);}//2.多态的好处:父类类型的变量作为参数,可以接收一个子类对象publicstaticvoidgo(Animala){System.out.println("开始。。。。");a.run();}}//--------------------分割线--------------packagecom.itheima.polymorphism2;publicclassTortoiseextendsAnimal{Stringname="乌龟";@Overridepublicvoidrun(){System.out.println("乌龟跑的贼慢");}publicvoidshrinkHead(){System.out.println("乌龟缩头");}}//--------------------分割线--------------packagecom.itheima.polymorphism2;publicclassAnimal{Stringname="动物";publicvoidrun(){System.out.println("动物会跑");}}//--------------------分割线--------------packagecom.itheima.polymorphism2;publicclassWolfextendsAnimal{Stringname="狼";@Overridepublicvoidrun(){Stringname="狼";System.out.println("狼跑的贼溜");}publicvoidestSheep(){System.out.println("狼吃羊");}}多态下的类型转换
自动类型转换就是子类对象给到父类