java 多态
Posted sunwenhao01
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 多态相关的知识,希望对你有一定的参考价值。
java引用变量有2种类型,一种是编译型类型,一种是运行时类型,编译时类型由声明该变量时使用的类型决定;运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。一个Person类,一个Student类,Student类继承了Person类,Person p = new Student();
1、如果Student类重写了Person类的test方法,那么p实际调用的是Student的test方法。
2、如果Person和Student各有一个相同的成员字段,那么p调用的是Student类的成员字段。
3、如果Student有一个方法,而父类中没有,那么p不可以调用这个方法。这是因为java程序在编译阶段只可以调用其编译时类型所具有的方法,所以p调用Student类的特有的方法编译不过。如果p真的要调用Student独有的方法,那么需要把p强制转型为Student : (Student)p;
4、Person p1=new Person(); p1不可以转换为Student。如果转换会报 java.lang.ClassCastException错误,向下转换只可以转换Person p = new Student()这样的p引用变量。通常先用instanceof判断一个对象是否可以强制类型转换,然后再使用(type)运算符进行强制转换。
以上是关于java 多态的主要内容,如果未能解决你的问题,请参考以下文章