java父类可以强制转化成子类吗?
转自:http://blog.csdn.net/ld422586546/article/details/9707997
Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用。
例:
public class Test {
public static void main(String[] args) {
Person person = new Boy();
Boy boy = (Boy) person;
boy.eat();
}
}
class Person {
public void eat() {
System.out.println("The people were eating");
}
}
class Boy extends Person {
public void eat() {
System.out.println("The boy were eating");
}
}
打印结果:The boy were eating
原因:当Boy实例化后将引用地址返回传给person,这时person引用实际指向的是Boy,所以将person转换成Boy能成功。
再定义一个类:
class Girl extends Person {
public void eat() {
System.out.println("The girl were eating");
}
}
main方法中添加:
Person p = new Girl();
Boy b = (Boy)p;
b.eat();
运行时提示:Girl cannot be cast to Boy(不能将女孩转换成男孩)
原因:当Girl实例化后将引用地址返回传给p,这时p引用实际指向的是Girl,将p转换成Boy也就是说将Girl转换成Boy,肯定不能成功。
上面的例子换句话来说,男孩和女孩都是人这肯定是对的,但你要说女孩是男孩肯定是不对的。
转载于:https://www.cnblogs.com/YuyuanNo1/p/7813456.html
java父类可以强制转化成子类吗?相关推荐
- java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则
Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...
- C#里氏转换,子类赋值父类,父类强制转换成子类的理解
C#里氏转换,子类赋值父类,父类强制转换成子类的理解 最近在学习C#,在父类和子类的学习上有不理解的地方. Father f = new Son(); 这样的一个实例化程序中,内存时怎么样处理的,为什 ...
- java 文字转换成语音 代码_【Java】将文本转化成语音
[Java]将文本转化成语音 发布时间:2018-05-07 21:45, 浏览次数:540 , 标签: Java 1.需要的jar包: 2.把dll文件放在%JAVA_HOME%\bin下(注意系统 ...
- Java继承关系中,父类不可以强制转换成子类
总结: 父类不可以强转为子类 父类中只存放共性抽象类方法,子类可以存放特性方法,所以子类 首先构建好两个类 构建继承类方法-点击查看 在Main中强制将父类转换为子类 Student a = (Stu ...
- C#父类强制转换成子类,子类隐式转换成父类
看你将父类引用到的是父类对象还是子类对象了. 比如Person类是Student的父类 那么可以将p直接强制转换为Student: Person p=new Student(); Student s= ...
- java中子类与父类强制转换_java中父类强制转换成子类的错觉
引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...
- java中父类强制转换成子类的错觉
引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...
- java中父类强制转换成子类的原则
Yes: 1.首先构造个Son对象,然后声明个Father类型的变量指向它(Son对象实例被向上转型为father,但在内存中的本质还是Son类型) Father father = new Son() ...
- 类型转换异常,父类不能强转换成子类
我们回到java角度上来, 总结一下: 1父对象=new 父类(); 2子对象=new 子类(); 3父对象=new 子类(); 4{ 父对象=new 子类(); 子对象=(子类)父对象; } 上述四 ...
最新文章
- jdk和cglib代理
- 2015-12-15 关于就近日期
- RabbitMQ——无法连接错误[AmqpConnectException: java.net.ConnectException: Connection refused: connect]解决方案
- IBM将收购Red Hat:面向Java的初衷
- 下列选项中不符合python语言变量命名规则的是_学习Python第二日--基本概念和类型...
- LeetCode - 48. Rotate Image
- YII2 搭建redis拓展(教程)
- Linux中useradd的用法
- border-radius的8个属性值_画半圆、叶子等
- 详细了解DAS、SAN和NAS三种存储方式
- Rplidar学习(四)—— ROS下进行rplidar雷达数据采集源码分析
- 计算机网络水平子系统布线图,综合布线七大子系统构成图
- 正宇丨人活得虚伪容易,活得真实很难
- 悟以往之不谏,知来者之可追~
- 怎么可以修改pr基本图形中的文字_10、Pr中基本图形安装使用,点点就可以应用高级的字幕...
- 情感分析的分类,情感分析模型有哪些,情感分析的应用场景,情感分析的发展趋势
- 是时候更新Android Studio 3.5了!不信,你看~
- 这些全球知名的设计网站,你用过的有哪些?
- 最贵服务器多少钱_买一台服务器需要多少钱?
- 支付宝已支持给微信QQ好友转账,但似乎转了个寂寞