java - 将类扩展为库的超类

时间:2016-08-19 08:58:25

标签: java inheritance jsoup abstract extend

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

  

Method不会覆盖超类

中的方法

我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:3)

没有访问修饰符的方法是package-private。将您引用的类子类化的唯一方法是在包org.jsoup.nodes中声明您的类,因此它位于同一个包中。

package org.jsoup.nodes;

class MyNode extends Node {
    // ...
}

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

但鉴于该类声明了包私有成员,它可能并不意味着在库外部进行子类化。

答案 1 :(得分:-2)

如果你必须在声明中扩展它,那么这里没有什么可做的,但改变超类方法的可见性或将你自己的类移动到超类包中,因为在默认情况下所有java方法都是“受保护的”,这意味着只有来自同一个包的类可以使用它们。如果运行时调用适合您的需要,您也可以尝试反射。