博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多态和强制类型转换
阅读量:7112 次
发布时间:2019-06-28

本文共 823 字,大约阅读时间需要 2 分钟。

子类可以赋值给超类,称之为向上转型,这个是自动的。

 

超类不可以赋值给子类,这个是向下转型,需要我们手动实现。

 

赋值给超类的子类引用在运行期间将表现出不同的特性,这就是多态。

 

小类型    可转换为   大类型  

大类型   转小类型需要   强制转换

 

对于存在继承关系的强制类型转换:

子类转换为父类属于向上塑型,可以直接转换

父类转换为子类属于向下塑型,需要强制类型转换,但是不一定成功。成功的条件是这个父类是经过子类向上塑型转换来的

即 :Father father=new Son(); Son son=(Son)father;

对于不存在继承关系的强制类型转换,一般都是失败的(如果不写转换方法的话)

 

即:

 子类可转为父类,父类不可以转为子类(如果不用强制类型转换)

 

1.  子类和父类含有相同的成员变量的时候,访问的是父类的成员变量

2.  子类和父类含有相同的成员方法是,访问的是子类的成员方法

3.  子类和父类含有相同的静态函数和静态方法时,访问的是父类的。

4.  父类不能访问子类特有成员和方法(强制类型转换除外)

 

也就是说,只有在访问成员方法的时候,才会表现出多态。

 

或者说:

 

对象多态时:

1.成员变量:(不涉及覆盖)
编译时: 参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过,没有,编译失败。
运行时: 参考引用变量所属的类中是否有调用的成员变量, 并运行该类所属中的成员变量。
简单的说:编译和运行都参考等号的左边。
2.成员函数(非静态):
编译时:参考引用变量所属的类中是否有调用的成员变量, 有, 编译通过, 没有,编译失败:
运行时:参考的是对象所属的类中是否有调用的函数。
简单的说:编译看左边, 运行看右边。
3.静态函数, 变量:
   
编译和运行都是参考左边参数类型!
   
其实静态方法不存在多态, 静态方法是属于类的,我们说的是对象的多态!静态方法直接用类名调用就好了,
   
没必要创建对象!
   
静态的方法只能被静态的方法所覆盖!

转载地址:http://pkqhl.baihongyu.com/

你可能感兴趣的文章
THINKPHP_URL简化设置
查看>>
关于Studio中引用mipmap目录下图片的问题
查看>>
服务器断电后自动重启
查看>>
Ubuntu下添加Eclipse快捷方式
查看>>
页面操作 页面放大/缩小 怎么确定恢复正常大小
查看>>
以两军问题为背景来演绎Basic Paxos
查看>>
统计中位值的一般概念
查看>>
gns3模式与使用csr1000v
查看>>
感想二
查看>>
Mangos魔兽世界服务端初探(1)--游戏服务端主体结构与消息分发
查看>>
SonarQube svn 认证失败的解决办法
查看>>
C++string与VC++CString互转
查看>>
Ubuntu查找占用端口进程并删除
查看>>
Rgb to Yuv,Tuv to Rgb转换(C# emgucv)
查看>>
JSTL标签+EL表达式
查看>>
PHP中的java方式重载
查看>>
CSS3:RESET、标准注释、多屏幕尺寸兼容写法。
查看>>
小得瑟一下,记一下一个SQL语句
查看>>
osx分区合并命令行操作
查看>>
Android 签名出错
查看>>