多态

多态前提需要 方法的重写

一个对象的类型只有一种, 但是引用对象类型却可以有很多种可能. // Person p = new Student();  // p = new Teacher(); ...等等

星星你个大星星: 多态指的是方法的多态,属性没有多态.

多态是基于父子关系来实现的

 多态需要 父类引用指向子类对象  // Father father = new Son();

final,static,private修饰的方法 不能被重写, 所以也就没有多态性可言

多态 基于 继承 关系,且要有 子类重写父类的方法

多态 调用的的具体的方法  要看 赋值号 右边new 出来的对象类型

多态  调用方法  方法的传参  灵活,方便..

//高(编译时期)   低(运行时期)

Person p = new Student();

我们用p.某某方法  只能调用Person有的方法 因为这是在编译时期.

我们 p.某某方法后,如果运行时期的类型(也就是new Student()这个类型) 如果重写了Person 的方法 ,就会调用运行时期的方法 这也就是多态

Person p = new Student();//这行代码只能调用父类有的方法, 而不能调用到子类自己独有的方法 ,所以需要类型转型

 Student student = (Student)p; //现在就可以调用Student特有的方法了  这里是  高 转 低  而且要有 父子关系 并且 要父类引用指向子类的对象.

//这样低转高后,会导致子类特有的方法丢失,从而无法调用.

低 转 高 就直接 把  new Student()这个对象; 赋值给 Person p;即可.  //Person p = new Student();

原文地址:https://www.cnblogs.com/shenyueshuo/p/12960602.html