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

在Java中将超类扩展为子类时出错-多态性

巴帅
2023-03-14

我目前正在java之旅中处理多态性问题,并在Eclipse中试用这些示例代码。我只是复制了代码,但我真的很想知道为什么我的代码无法编译。

所以我得到了三个文件:示例。爪哇,动物。爪哇和狗。JAVA

Example.java包含主要方法:

public class Example {
    public static void main(String[] args) {
        Animal myDog = new Dog();
    }
}

然后我为Animal和Dog创建了另外两个类,如下所示

类动物

public class Animal {

    public void makeNoise() {
    }

    public void eat(){
    }

    public void sleep() {   
    }

    public void roam() {

    }

}

狗类

public class Dog {

}

我的理解是,我可以让狗成为扩展超类动物的子类。但是为什么我的代码不编译呢?

我在这些代码中遗漏了什么吗?

共有1个答案

莫骞仕
2023-03-14

您的Dog类未扩展animal类,因此这是无效的:

Animal myDog = new Dog();

你需要修改类狗为了继承动物类

你可以通过以下方式实现这一目标:

public class Dog extends Animal{
 类似资料:
  • 我在Java中读到了关于将超类变量类型化为子类的知识,反之亦然。请告诉我哪些是有效的? 动物是超级类,有猫和狗子类。

  • 问题内容: 我知道一个类可以实现多个接口,但是可以扩展多个类吗?例如,我希望我的班级同时扩展我创建的类。这在Java中可行吗?这两个语句并收到一个错误。如果不可能,为什么呢?扩展,但我猜它也扩展了,因为它继承了字段,并且可以在需要对象的地方传递。同样,像Java中的所有类一样,它们扩展了类。那么为什么不能扩展一个以上的类呢? TransformGroup继承 那么,如果可能的话,正确的方法是什么?

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

  • 问题内容: 我有能力在编译时扩展一个类,但是我需要能够在运行时使用已实例化的超类的实例创建此子类的实例。 从理论上讲这应该是可能的,因为已经在子类构造函数之前调用了超类构造函数。 我没有足够的程序访问权限来更改实例化到我的子类或中断原始实例化。 用例:现有一个类X实例的数组。我的代码在之后加载。我需要使用已加载的子类Y扩展X来覆盖实例X之一的方法之一。父程序仅通过该数组访问对象,因此我想用Y实例替

  • 问题内容: 我正在尝试创建一个扩展的自定义视图。这是我的班级定义文件 : 这是在我的ghostviewscreen.xml中: 现在,我在活动中进行了: 当被调用时,抛出一个异常: 谁能告诉我为什么会出现此错误?谢谢。 问题答案: 我想我弄清楚了为什么这没用。当我应该为两个参数“ Context,AttributeSet”的情况提供构造函数时,我只为一个参数“ context”的情况提供了构造函数

  • 我的问题有两个方面。要解决的错误是,当我使用自定义路由重用策略时,当我使用implements重写angular路由器类RouteReuseStrategy时,该策略不会被触发,当我使用extends关键字时,我会出现以下异常, 我的生成设置的详细信息: > 使用gulp编译 gulp.task(“compile”,()=>{let tsResult=gulp.src(“app/**/*.ts”)