Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重写超类中的私有方法-有办法吗?_Java_Inheritance - Fatal编程技术网

Java 重写超类中的私有方法-有办法吗?

Java 重写超类中的私有方法-有办法吗?,java,inheritance,Java,Inheritance,我知道,如果我想做的事情是有意的,那么该方法将受到保护而不是私有的,但是我想创建自己的PriorityQueue,需要调用siftUp几次。我无法编辑该字段的声明,因为PriorityQueue是java库的一部分,所以我正在寻找另一种方法来调用它。我唯一能做的就是从库中复制整个类并根据需要更改它吗?不幸的是,无法重写超类的私有方法 根据,私有方法只供类本身访问 下面是超类对子类的可见性表: 我相信他们通过提供私有的可见性为开发人员提供了实现“最小特权”原则的机会,因此在创建它的类之外的任何

我知道,如果我想做的事情是有意的,那么该方法将受到保护而不是私有的,但是我想创建自己的
PriorityQueue
,需要调用
siftUp
几次。我无法编辑该字段的声明,因为
PriorityQueue
是java库的一部分,所以我正在寻找另一种方法来调用它。我唯一能做的就是从库中复制整个类并根据需要更改它吗?

不幸的是,无法重写超类的私有方法

根据,私有方法只供类本身访问

下面是超类对子类的可见性表:

我相信他们通过提供私有的可见性为开发人员提供了实现“最小特权”原则的机会,因此在创建它的类之外的任何地方都无法访问它

如果您希望能够覆盖它,则应将其设置为受保护的,或者不给它任何修饰符(被视为“包访问”级别)

以下是一个例子:

package this.silly.package;
公共类Foo(){
取消此操作(){
//做些事情。。。
}
私有的空某物(){
//做一些秘密的事情。
}
}
package this.silly.package;
公共类Bar扩展了Foo(){
//这会奏效的
//因为这个类与Foo在同一个包中。
@凌驾
取消此操作(){
//做点别的
}
//这行不通
//因为Foo将此方法设置为私有,
//因此,只有Foo才能访问它。
@凌驾
私有的空某物(){
//请不要做秘密的事。你可能会让我发疯的!
}
}

你在说什么财产?您可以重写
offer(ee)
方法并编写自己的
siftUp
implementation@SunilChakravarthy对不起,我是说申报。当然,这也行,不过考虑到我只需要更频繁地打电话,这似乎是一个很大的工作。但总比抄袭全班好,谢谢!您不能重写私有方法(这是一件好事)。否则,它就不会是私人的。