转自: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父类可以强制转化成子类吗?相关推荐

  1. java 父类强制转换为子类_[java]Java中父类强制转换成子类的原则

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用. 例: public class Test { public static void main(Str ...

  2. C#里氏转换,子类赋值父类,父类强制转换成子类的理解

    C#里氏转换,子类赋值父类,父类强制转换成子类的理解 最近在学习C#,在父类和子类的学习上有不理解的地方. Father f = new Son(); 这样的一个实例化程序中,内存时怎么样处理的,为什 ...

  3. java 文字转换成语音 代码_【Java】将文本转化成语音

    [Java]将文本转化成语音 发布时间:2018-05-07 21:45, 浏览次数:540 , 标签: Java 1.需要的jar包: 2.把dll文件放在%JAVA_HOME%\bin下(注意系统 ...

  4. Java继承关系中,父类不可以强制转换成子类

    总结: 父类不可以强转为子类 父类中只存放共性抽象类方法,子类可以存放特性方法,所以子类 首先构建好两个类 构建继承类方法-点击查看 在Main中强制将父类转换为子类 Student a = (Stu ...

  5. C#父类强制转换成子类,子类隐式转换成父类

    看你将父类引用到的是父类对象还是子类对象了. 比如Person类是Student的父类 那么可以将p直接强制转换为Student: Person p=new Student(); Student s= ...

  6. java中子类与父类强制转换_java中父类强制转换成子类的错觉

    引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...

  7. java中父类强制转换成子类的错觉

    引言:父类引用指向子类对象在java中十分常见,比如: Object object=new a();//a是一个类名 但是有时候我们看见子类引用指向了父类对象,就是上边的反过来,比如 图片中圈1标识的 ...

  8. java中父类强制转换成子类的原则

    Yes: 1.首先构造个Son对象,然后声明个Father类型的变量指向它(Son对象实例被向上转型为father,但在内存中的本质还是Son类型) Father father = new Son() ...

  9. 类型转换异常,父类不能强转换成子类

    我们回到java角度上来, 总结一下: 1父对象=new 父类(); 2子对象=new 子类(); 3父对象=new 子类(); 4{ 父对象=new 子类(); 子对象=(子类)父对象; } 上述四 ...

最新文章

  1. jdk和cglib代理
  2. 2015-12-15 关于就近日期
  3. RabbitMQ——无法连接错误[AmqpConnectException: java.net.ConnectException: Connection refused: connect]解决方案
  4. IBM将收购Red Hat:面向Java的初衷
  5. 下列选项中不符合python语言变量命名规则的是_学习Python第二日--基本概念和类型...
  6. LeetCode - 48. Rotate Image
  7. YII2 搭建redis拓展(教程)
  8. Linux中useradd的用法
  9. border-radius的8个属性值_画半圆、叶子等
  10. 详细了解DAS、SAN和NAS三种存储方式
  11. Rplidar学习(四)—— ROS下进行rplidar雷达数据采集源码分析
  12. 计算机网络水平子系统布线图,综合布线七大子系统构成图
  13. 正宇丨人活得虚伪容易,活得真实很难
  14. 悟以往之不谏,知来者之可追~
  15. 怎么可以修改pr基本图形中的文字_10、Pr中基本图形安装使用,点点就可以应用高级的字幕...
  16. 情感分析的分类,情感分析模型有哪些,情感分析的应用场景,情感分析的发展趋势
  17. 是时候更新Android Studio 3.5了!不信,你看~
  18. 这些全球知名的设计网站,你用过的有哪些?
  19. 最贵服务器多少钱_买一台服务器需要多少钱?
  20. 支付宝已支持给微信QQ好友转账,但似乎转了个寂寞

热门文章

  1. oracle win2008安装图解,win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解)
  2. 【chromium】Crashpad 简介
  3. CSS样式背景图片的自适应
  4. 一个域名对应多个IP
  5. Review of Matrix Theory (HITSZ) 含22年真题
  6. 克罗格 Kroger EDI需求分析及注意事项
  7. 数据科学猫:有监督学习的定义与模型
  8. 【干货】量化投资国内外很棒的论坛网站
  9. 什么广播域?什么是冲突域?冲突域和广播域的区别:
  10. wifi 直连 wifi p2p