码迷,mamicode.com
首页 > 编程语言 > 详细

java 多态

时间:2018-11-14 14:24:11      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:eof   .class   new   转型   不一致   except   调用   方法   运行   

  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 多态

标签:eof   .class   new   转型   不一致   except   调用   方法   运行   

原文地址:https://www.cnblogs.com/sunwenhao01/p/9957270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!