【发布时间】:2014-11-22 02:16:00
【问题描述】:
我遇到了在子类中扩展/更改私有方法的麻烦。例如,我正在创建一个从超类继承的模拟对象,以便在测试中使用。
这是我想更改的父类代码示例:
private void build(int skill) {
// switch screen
state = Constants.STATE_GENERATING;
percentdone = 0;
notifyViewerRedraw() ;
// select generation method
switch(method){
case 1 : mazebuilder = new MazeBuilderPrim(); // generate with Prim's algorithm
break ;
case 0: // generate with Falstad's original algorithm (0 and default), note the missing break statement
default : mazebuilder = new MazeBuilder();
break ;
}
}
我知道私有方法不能在子类中被覆盖。因此,我应该创建一个具有相同签名的新方法。我是否还必须重新创建此类中的所有私有变量?但是如果我这样做,我不确定这是否会改变行为与父类不同,因为我知道空间实际上是为子类中父类的私有变量保留的。因此,我会有重复的私有变量。我不知道解决这个问题的最佳方法是什么。
【问题讨论】:
-
我可能会误解,但是在父级中,您不能将有问题的方法和变量设置为受保护而不是私有吗?
标签: java inheritance