【发布时间】:2018-01-30 22:14:22
【问题描述】:
如果我不想调用我的类上的方法,我只需将其设为私有。
但如果我想允许该方法被覆盖,我必须使其受到保护
是否可以在抽象类上有一个不能调用但可以覆盖的方法? (我猜不是,但有什么解决方法吗?)
用例:
abstract class Super {
protected void finalize() {
}
public final void doThings() {
// do stuff
finalize();
}
}
以及想要扩展课程的人:
class Sub extends Super {
@Override
protected void finalize() {
closeSockets();
alertSomeone();
}
}
但我不希望其他类调用mySub.finalize();
【问题讨论】:
-
不能被调用但可以被覆盖....我不明白,你想覆盖一个你不能的方法打电话???
-
一个可覆盖但不可调用的函数的目的是什么?这有点违背了目的。也许你应该再看看你的设计。
-
OP想要一个在类内部调用的方法,就像
private一样,但也是可覆盖的......我认为这是不可能的,好像任何类都可以看到它被覆盖,它也可以看到它调用... -
该方法将以模板模式在抽象类中使用。
-
这整件事有一股难闻的气味......
标签: java inheritance abstract-class visibility