gpt4 book ai didi

java - 试图调用子方法,但将其实例化为父方法

转载 作者:行者123 更新时间:2023-11-29 07:07:00 24 4
gpt4 key购买 nike

我已经尝试为此寻找答案,但找不到确切的答案……情况是这样的。我有一个类和一个子类,我这样定义它们:

public class Shape{
public methodA{
System.out.println("Hello!");
}
}

public class Square extends Shape{
public methodB{
System.out.println("I'm a Square!);
}
}

主要是,我像这样实例化它们,但现在我无法调用 methodB,因为我“给”(不确定此处的术语)它类型 Shape:

Shape square = new Square();
square.methodB() // This doesn't work.

如果我想也能调用子类的方法,我是不是设计错了?我这样做是因为我有许多从 Shape 类继承的形状,但我不想将每个形状类都导入到我的项目中。我尝试搜索,但没有以我理解的方式找到答案。谢谢。

-RB

最佳答案

它不起作用,因为 methodB() 没有在父类中定义,它是 Shape 类。为了解决这个问题,您必须在 Shape 类(或者更一般地说,Shape 的任何子类)中创建该方法,然后您可以在 Square 类来改变它的行为。所以你可以修改它看起来像这样:

public class Shape{

public void methodA(){
System.out.println("Hello");
}

public void methodB(){
System.out.println("I'm a shape");
}
}

public class Square extends Shape{

public void methodB(){
System.out.println("I'm a square");
}
}

现在,当您执行 Shape shape = new Square(); 并调用 shape.methodB(); 时,它将打印“I'm a square”。

关于java - 试图调用子方法,但将其实例化为父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com