gpt4 book ai didi

java - 子类中的每个函数都必须在父类(super class)中定义吗?

转载 作者:行者123 更新时间:2023-12-01 18:23:49 28 4
gpt4 key购买 nike

class shape {
private String name;
public shape(){
System.out.println("in shape, default");
}
public shape(String n){
System.out.println("in shape, one parameter");
name=n;
}
public String getName(){
return name;
}
};

class square extends shape {
private int length;
public square(){
super("square");
}
public void f(){
System.out.println("in f, square!");
}
};

public class Test {
public static void main(String args[]){
shape newObject=new square();
System.out.println(newObject.getName());
newObject.f();
}
};

当我尝试在主方法中调用函数f()时,它会抛出错误,但是当我在父类(super class)shape中定义f(),它有效。 Shape 不是抽象类。

谁能给我解释一下这是为什么吗?

谢谢!

最佳答案

问题是 newObject 变量的编译时类型是shape。这意味着编译器唯一知道的成员是 shape 中的成员,并且不包括 f()

如果您想使用特定于给定类的成员,则需要使用该类型的变量,例如

square newObject = new square();
newObject.f(); // This is fine

顺便说一句:

  • 您应该遵循 Java 命名约定(ShapeSquare 而不是 shapesquare)
  • 类声明后不需要分号
  • 您应该减少每个类声明的第一行...目前看起来很奇怪。

关于java - 子类中的每个函数都必须在父类(super class)中定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26889885/

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