当前位置: 首页 > 面试题库 >

将超类的对象转换为子类

公西飞鸾
2023-03-14
问题内容

我有一些这样的代码。

超级班

public class Actual {
    public int x = 123;
}

子类

public class Super extends Actual{
    public int x = 999;
    public int y = 12345;
}


public class Sub extends Super {
    public int x = 144;
}

所以问题是我可以将超类的对象转换为子类吗?这个问题对我来说是正确的吗?

public class Mid1Prob1 {
    public static void main(String[] args) {
        System.out.println("Testing...");
        int x = 3;
        Actual actual = new Super();
        System.out.println(actual.x);


        Super super1 = new Super();
        System.out.println(super1.x);


        Actual act = new Actual();

        act = new Sub();
        System.out.println(act.x);
    }
}

但它给Class Cast异常。


问题答案:

您可以将子类转换为超级类,反之亦然。如果“车辆”是“超级类”,而“汽车”是子类,则所有“汽车”(子代)都是“汽车”(“超级”),但并非所有“车辆”都是“汽车”。



 类似资料:
  • 我理解超类/子类之间的关系以及强制转换是如何工作的。但是,我的问题是,如果知道中间有一个类,你能把一个超类转换成一个特定的子类吗?例如,如果我有一个动物类对象包含一个BigDog对象,我可以将该对象强制转换为Dog吗?如果BigDog中有Dog中不存在的方法怎么办? 简而言之,你当然可以说超类对象是子类对象,但为什么你可以反转呢? 转念一想, Java在调用方法时检查的是:引用(DOG)是否有引用

  • 问题内容: 我有2个类,分别称为超类和子类,我试图将子类对象转换为超类,但是当我想使用超类的子类对象时,它似乎不起作用。请帮忙解释。谢谢。这些是代码: 当我尝试使用子类的displaySub()时出现错误 问题答案: 超类不能知道子类方法。 这样考虑: 你有超一流的 你有两个子类,即:, 两个子类将具有相同的特征,例如 该超意识到这些,因为所有S能说话(即使它不知道此操作的确切机制) 一但可以做的

  • 问题内容: 可以说我有一个无法更改的库函数,该函数产生了类A的对象,并且我创建了一个继承自A的类B。 使用库函数生成B类对象的最直接方法是什么? 编辑-在评论中要求我提供更多详细信息,所以这里是: PyTables是一个处理python中的分层数据集的程序包。我最常使用的功能是管理部分磁盘数据的能力。它提供了一种“数组”类型,仅随扩展切片一起提供,但我需要选择任意行。Numpy提供了此功能- 您可

  • 我是Firebase数据库的新手,我正在遵循谷歌的文档从我的数据库中检索数据。 我有这样的结构: 我的应用程序崩溃。 我不明白与谷歌文档的区别。有人能帮帮我吗?我太纠结了! 错误是:

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。

  • 问题内容: 我希望结果是: 汽车通话方式:红色 宝马的致电方式:颜色为黑色 汽车通话方式:颜色为黑色 但是,我得到的结果是: 汽车通话方式:红色 宝马的致电方式:颜色为黑色 宝马的致电方式:颜色为黑色 我哪里错了?以及如何使用超类中的方法在子类对象中获取数据?我可以在BMW课堂上写一个方法来做到这一点。但是,为什么强制转换不起作用?谢谢你! 好!谢谢! 我明白了为什么投射不起作用。 因此,我在BM