关于上转型对象与强制转换
来源:互联网 发布:手机淘宝2015旧版5.7.2 编辑:程序博客网 时间:2024/05/22 15:31
一、如何得到上转型对象:
例如:
public class A {public String a = "A类";// 父类A定义的成员变量apublic void teach() {System.out.println("A类的方法");}// 父类A定义的teach方法}
public class B extends A {public int b = 10;// 子类B新定义的成员变量bpublic String a = "B类";// 子类B重新定义成员变量a,即从父类A继承来的a被隐藏public void eat() {System.out.println("B类新增的方法");}// 子类新增的方法}
public class Test{public static void main(String[] args){A n=new B();//a为上转型对象System.out.println(n.a);//调用被子类B隐藏的变量an.teach();//调用继承的方法}}上述例子中,输出为:
A类
A类的方法
上转型对象:调用从父类继承的方法和成员变量或者子类重写的方法和被隐藏的成员变量(子类重新定义一个一模一样的成员变量),上转型对象不能调用子类新增的
方法和属性;
二、强制转换:
格式:子类名 对象名=(子类名)父类对象名
注意:
强制转换不一定成功,只有在父类的对象本身是由子类的对象自动转型过来的,则强制转换就会成功。
例如:
package com.test.exercise_3;public class Student {}
package com.test.exercise_3;public class UnStudent extends Student {}
package com.test.exercise_3;public class Test {/** * @param args */public static void main(String[] args) {Student stu = new Student();// 直接创建父类对象UnStudent us = (UnStudent) stu;// 强制转换}}会报错:
Exception in thread "main" java.lang.ClassCastException: com.test.exercise_3.Student cannot be cast to com.test.exercise_3.UnStudent
at com.test.exercise_3.Test.main(Test.java:10)
强制转换失败
若将Test类改为:
package com.test.exercise_3;public class Test {/** * @param args */public static void main(String[] args) {Student stu = new UnStudent();// 自动转型UnStudent us = (UnStudent) stu;// 强制转换}}则没有报错
0 0
- 关于上转型对象与强制转换
- 关于强制转换与补码
- 【JavaScript】封装对象与强制类型转换
- 关于void*与int的强制转换
- 上转型对象
- 上转型对象
- 上转型对象
- 上转型对象
- Java上转型对象
- 上转型对象
- 对象上转型验证
- JAVA 上转型对象
- Java上转型对象
- java 上转型对象
- 关于对象的转型
- 关于对象转型00
- 对象的上转型对象
- 对象的上转型对象
- 华为云桌面FUSION ACCESS输入用户名和密码后连不上桌面的解决办法
- 什么是冷备份和热备份,有什么区别?
- 廖雪峰python教程阅读之字符串和编码
- Android开发笔记之gradle的buildTypes内部配置
- Android Volley网络请求框架
- 关于上转型对象与强制转换
- html5初入门第一堂
- SSL常见加密算法
- jquery DOM内部插入append()与appendTo()
- 工作中Django总结之一(项目)
- DP两道关于递增非递增的题目
- SQL语句AND&OR
- 深度学习Imagenet caffe AlexNet 实验步骤
- 携程技术面试官素质。。。。。。哎