我需要将自己的类扩展到库类(org.jsoup.nodes.Node
)。
超类是抽象的,包含抽象方法。我的问题是这些抽象方法中的一些没有修饰符,这意味着默认情况下我没有访问权限,我无法覆盖它们。当我尝试这样做时,我有这样的信息:
Method不会覆盖超类
中的方法
我怎么能解决这个问题?
答案 0 :(得分:3)
没有访问修饰符的方法是package-private。将您引用的类子类化的唯一方法是在包org.jsoup.nodes
中声明您的类,因此它位于同一个包中。
package org.jsoup.nodes;
class MyNode extends Node {
// ...
}
实际上没有什么可以阻止你这样做。
但鉴于该类声明了包私有成员,它可能并不意味着在库外部进行子类化。
答案 1 :(得分:-2)
如果你必须在声明中扩展它,那么这里没有什么可做的,但改变超类方法的可见性或将你自己的类移动到超类包中,因为在默认情况下所有java方法都是“受保护的”,这意味着只有来自同一个包的类可以使用它们。如果运行时调用适合您的需要,您也可以尝试反射。