Java类问题

标签 java class

class One {
public One foo() { return this; }
}

class Two extends One {
public One foo() { return this; }
}

class Three extends Two {
public Object foo() { return this; }
}

public Object foo() { 返回这个; } 抛出一个编译错误。这是为什么?有人可以解释为什么“对象”类型是不可能的吗? Object是一二类的基类吗? If So 为什么会抛出错误?

请更改问题的标题,因为我找不到合适的标题。

最佳答案

Three.foo正在尝试覆盖 Two.foo() ,但它没有正确执行。假设我要写:

One f = new Three();
One other = f.foo();

忽略实际上 Three.foo() 的事实确实返回One , Three.foo() 的签名不保证。因此,对于 确实 必须返回 One 的方法来说,它不是一个合适的重写.

请注意,您可以更改返回类型并仍然覆盖,但它必须具体而不是更少。换句话说,这没问题:

class Three extends Two {
    public Three foo() { return this; }
}

因为ThreeOne 更具体.

关于Java类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780954/

相关文章:

C# (mono) 没有利用所有内核

java - 为什么实例和静态内部类的初始化不同?

C++ - 使用链表和一次执行一个函数的类的程序

java - Java 中有没有一种方法可以基于 java.lang 基本类型(例如 String)构建自定义类型?

java - JSON 到 POJO - 忽略某些嵌套属性

java - 如何更改ListView项的文本背景

c++ - 为什么要在命名空间中使用类

java - 在 Java 中匹配 2 个问答游戏的问题和答案的数组列表

java - 如何使用java读取存储在服务器上的文件内容?

ios - 无法访问类对象变量