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

子类的方法不可用[已关闭]

阴福
2023-03-14

我试图了解继承在Java中是如何工作的。这是我的示例代码。

class Animal {
    void eat() {
        System.out.println("eating...");
    }
}
 
class Dog extends Animal {
    void bark() {
        System.out.println("barking...");
    }
}
 
public class TestInheritance1 {
    public static void main(String args[]) {
        Dog d = new Dog();
        d.bark();
        d.eat();
    }
}

这工作正常。但是我无法理解,当我通过<代码>动物d=新狗()创建对象时;为什么我不能不调用类狗的方法<代码>树皮()?感谢所有的答案。

共有1个答案

古扬
2023-03-14

如果我明白什么是问题:你在问为什么你不能在动物d上使用树皮()方法?

你不能这样做,因为你正在向上投射你的狗的物体。这意味着,你正在创建一个对象狗,但与动物类类型。父类不知道子方法,所以不能在父类上使用childs method bark()。

 类似资料:
  • 我必须实现一个名为的方法(Factory-method),在这里我可以创建具有特定温度单位(摄氏度、开尔文...)的新对象。我还创建了将代码从一个单元转换为另一个单元的方法。问题是我不知道如何将covert-method连接到方法。我试着让我的所有方法和变量,以便我可以调用它们。问题是:如何在create-methods中实现convert-methods? 这是我的代码:

  • 问题内容: 指这里 A是预编译的Java类(我也有源文件)B是我正在编写的Java类 B扩展了A。 如何实现逻辑,以便A可以调用B拥有的方法。 以下是条件: 我不想触摸A(尽管没有其他解决方案,但这只是最后一个选择)。 我不想使用反射。 如前所述,如果需要,我可以修改A。哪种方式可能是可行的解决方案? 问题答案: 类应该定义将要调用的方法(可能是抽象方法,根据Paul Haahr的出色指南,A应该

  • 问题内容: 让我们看一下这段代码: 我希望这能打印出“孩子”,但结果是“父母”。为什么Java会改为调用父类,我该怎么做才能使其在子类中调用方法? 问题答案: 不会覆盖,因为它没有相同的形式参数。一个拿走,另一个拿走。因此,运行时的多态不会被应用,并且不会导致子类方法的执行。根据Java语言规范: 如果满足以下所有条件,则在类C中声明或由类C继承的实例方法从类C中 重写 另一个在类A中声明的方法:

  • 我有3个类:主要游戏,ufoMovement(实际上是一个线程)和ufo本身(是的,在图片中是德语,但他们只是名字)。UfoMovement创建了一个Ufo,它有一个叫做“爆炸”的方法,其中组件会飞离。主游戏开始线程UFOMovement。这个游戏是一个小行星躲避游戏,你的ufo正在飞行,你必须躲避小行星,这意味着我必须从main类调用方法:Explomde,因为那个类检查碰撞,但是当我调用mai

  • Java代码: 我的问题是:类中的是否重载了超类中同名的? 我的朋友说他们不是因为他们不在一个班。

  • 想要改进此问题?通过编辑这篇文章添加详细信息并澄清问题。 我有一个新系统。我下载了(只下载了未安装的)Java 9,在下载文件夹中有两个与Java 9相关的文件夹()和(