父类不能转换成子类

Exception in thread "main" java.lang.ClassCastException: Person cannot be cast to Boy
    at Test.main(Test.java:5)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
public class Test {

    public static void main(String[] args) {
        Person person = new Person();
        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");
    }
}
时间: 2024-10-12 13:59:31

父类不能转换成子类的相关文章

求解:为什么父类没有的属性,在强制转换成子类后却有值了

foreach (M912 m912 in m912List) { var m934 = (M934)m912; //强制转换后,父类M912 中没有的属性m918List在转换后的子类m934中能访问且有值 } 说明:其中M912 是父类M934 是子类 m918List是子类M934的一个属性 疑问,为什么父类没有的属性,在强制转换成子类后却有值了,这种情况是如何实现的? ************************************ 问题:将子类实例赋值给父类的实例后,子类对象所

子类指针转换成父类指针时,指针值会变化

指针转换在C++中再正常不过了,特别是子类向父类的转换,一般情况下转换后指针值是不会变的.但是某些特殊情况,子类指针转换成父类指针,指针值会产生一定的偏移量,至于为什么就不清楚了.要确保指针值不变,可以先将指针转成void*,再根据实际情况强制转换成需要的类型就可以了. 本文地址:http://www.cnblogs.com/vcpp123/p/5902866.html 参考文章: C++多重继承下的指针类型转换 http://www.veryhuo.com/a/view/52953.html

C++多重继承下一个子类和父类指针转换的bug

这两天有个C++新手问了我一个问题,他的工程当中有一段代码执行不正确,不知道是什么原因.我调了一下,代码如果精简下来,大概是下面这个样子: class IBaseA { public: virtual void fnA() = 0; int m_nTestA; }; class IBaseB { public: virtual void fnB() = 0; int m_nTestB; }; class CTest : public IBaseA,public IBaseB { public:

C++的子类与父类强制转换产生的问题

近日,在项目的一个类中如果碰上想要将子类强制转换成父类,然后再调用其父类版本的virtual虚函数. 就会出现gcc编译错误提示:error: ld returned 1 exit status gcc提示原因:在link过程中,发现了无法找到的reference symbol, 该reference symbol是此父类的拷贝构造函数. 由此,我推断问题的原因是:在子类转换成父类的过程中,默认地调用了父类的拷贝构造函数.而由于项目中针对大部分类都使用了DISALLOW_COPY_AND_ASS

把Message转换成String

把Message转换成String注意,这里欠缺CM消息和CN消息,因为它们不是系统消息,不经过Dispatch API转发,但是可以把它们写在WndProc里,这样SendMessage送来的消息也可截获,或者Dispatch里,这样动态消息也可统统截获.另外就是要把VCL标准控件里,凡是改写了WndProc的子类也要截取,因为Windows会把消息发给它们,却不一定会调用TWinControl.WndProc函数(但大多数还是调用了,没准是全部).唯一不能截获的是子类出现了新消息,并且改写了

dom4j将xml转换成对象

package test; import java.lang.reflect.Field; import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.tree.DefaultAttribute; public

BlocksKit初见:一个支持将delegate转换成block的Cocoa库

简单介绍 项目主页: https://github.com/zwaldowski/BlocksKit BlocksKit 是一个开源的框架,对 Cocoa 进行了扩展.将很多须要通过 delegate 调用的方法转换成了 block.在非常多情况下.blocks 比 delegate 要方便简单.由于 block 是紧凑的,能够使代码简洁.提高代码可读性.另外 block 还能够进行异步处理.使用 block 要注意避免循环引用. 文件夹结构 BlocksKit 的全部方法都以bk_开头,这样能

pdf怎样转换成word格式如何在电脑中操作?

如何在电脑中转换文件格式?PDF格式转换word应该如何进行操作?在你使用电脑打开一份文件的时候,打开一看它是一份PDF格式的文件.此刻需要将其转换成word,那该怎么弄呢? 1.由于小编 解决的方法可能和大家有所不同,操作步骤可能会不一样,在这里仅供大家参考.可以在浏览器搜索迅捷PDF转换器借助它来进行操作,然后点击下载软件电脑桌面上. 2.进入到PDF转换器的操作页面,移动鼠标到左侧的栏目列表中.选中PDF转成其他文件.打开它的下拉框会发现它分为了多种PDF文件转换的子类目,这里需要点击的是

使用Python3将Markdown(.md)文本转换成 html、pdf

一.Markdown中不同的文本内容会分成不同的文本块,并通过markdown的语法控制进行文本的拼接,组成新的文件. 二.利用Python3实现(.md)文件转换成(.html)文件 在cmd命令行下进入(.py)文件目录下,使用命令进行执行 >python md2html.py <file.md> <file.html> import sys, re #生成器模块 def lines(file): #在文本最后加一空行 for line in file: yield li