多态前提需要 方法的重写
一个对象的类型只有一种, 但是引用对象类型却可以有很多种可能. // 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();