多态性在java中有两种体现:
- 方法的重载和重写
- 对象的多态性-----可以直接应用在抽象类和接口上
对象的多态------在Java中,子类的对象可以替代父类对象使用
- 一个变量只能有一种确定的数据类型
- 一个引用类型变量可能指向(引用)多种不同类型的对象
- 例如:
可以向上转型(把子类的对象可以给父类的类型的变量引用)
Java引用变量有两个类型:编译时类型和运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现多态。
Person e=new Student();//Person类型的变量e,指向Student类型的对象
注意:引用变量e编译时和运行时的类型不同。编译时为Person类,运行时为Student类,当调用的方法子类和父类中同时出现时,执行的是子类覆盖后的方法。可能会出现多态,即:相同类型的变量、调用同一个方法时呈现出多种不同的行为特征。当e调用Student类中特有的方法时,编译会报错,因为在Person类中并没有该方法,所以编译会报错。
instanceof运算符
instanceof运算符的作用是:在进行强制类型转换之前,首先判断前一个对象是否是后一个类的实例,是否可以成功转换,从而保证代码更加健壮