java - 将 class 扩展为库 superclass

java - extend a class to a library superclass

我需要将自己的 class 扩展到库 class (org.jsoup.nodes.Node)。 superclass 是抽象的,包含抽象方法。我的问题是这些抽象方法中的一些没有修饰符,这意味着默认情况下我无权访问并且我无法覆盖它们。当我尝试这样做时,我收到以下消息:

Method does not override method from its superclass

我该如何解决这个问题?

没有访问修饰符的方法是包私有的。子 class 您引用的 class 的唯一方法是在包 org.jsoup.nodes 中声明您的 class,因此它在同一个包中。

package org.jsoup.nodes;

class MyNode extends Node {
    // ...
}

实际上没有什么能阻止你这样做。

但是考虑到 class 声明了包私有成员,它可能并不意味着要在库外进行子class编辑。

如果你必须在声明中扩展它,除了改变 superclass 方法的可见性或将你自己的 class 移动到 superclass 包中,这里没有什么可做的,因为在默认所有 java 方法都是 "protected" 这意味着只有来自同一个包的 classes 可以使用它们。如果运行时调用适合您的需要,您也可以尝试反射。