当前位置: 首页 > 知识库问答 >
问题:

当在Java中使用父类的构造函数方法来创建对象时,为什么我们不能将chield类对象创建为它自己的类型呢

高钱青
2023-03-14

第一步:家长班

public class Parent {
    public void m1() {
        System.out.println("parent m2");
    }
}

步骤2: Chield类

public class Chield  extends Parent{
        public void m1() {
            System.out.println("chield m1");
        }
        public void m2() {
            System.out.println("chield m2");
        }
    }

第三步:-

class Test{
    public static void main(String []args) {
                
        Chield c = (Chield) new Parent(); 
        
    }
}

//给我一个运行时错误//异常线程"main"java.lang.ClassCast异常:类com.swapnil.父不能//转换到类com.swapnil.Chield(com.swapnil.父和com.swapnil.Chield在未命名//加载器'应用'模块)

共有1个答案

公孙高畅
2023-03-14

这不会给您一个编译时错误,因为您正在进行类型转换,并且编译器认为这是有目的的,而且是可能的。但它给出了运行时错误,因为这是不可能的。父类不能强制转换为子类。

 类似资料:
  • 问题内容: 我想知道抽象类的构造函数的作用是什么;因为我们没有实例化抽象类,所以为什么我们需要这样的构造函数? 问题答案: 有时候,您需要对实例变量进行一些常见的初始化,而所有继承类都需要设置。在扩展抽象类时,您会实例化该抽象类,而该具体类具有构造函数,该构造函数将向抽象类的构造函数提供参数。

  • 当我用main方法为类创建对象时会发生什么?我能在main方法中使用这些实例变量吗,因为它们在同一个类中?

  • 我在弄清楚如何根据给定的类型在构造函数中创建一个新对象时遇到了困难。 例如,我有一个机器人驱动程序,它有一个默认构造函数,不接受任何参数,并创建一个基本的机器人。但我有另一个构造器,根据这个论点创造了一个新的机器人。 是一个接口。那么,如果我想创建,使其是另一种类型,比如?我需要做一些类型的铸造吗?

  • 我试图创建自己的类型,在这些类型上我可以使用调用函数。 我如何创建自己的类型并像普通类型一样使用它们?我知道接口也不工作,但这是我的第一个猜测。

  • 在hibernate的xml方法中,创建hibernate SessionFactory对象时使用

  • 问题内容: 我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻? 我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P 为什么此陈述无效? 因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。 问题答案: 正是因为aChild是aParent功能的超集。你可以写: 因为每只狐狸都是动物。但