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 可以使用它们。如果运行时调用适合您的需要,您也可以尝试反射。
我需要将自己的 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 可以使用它们。如果运行时调用适合您的需要,您也可以尝试反射。