重写方法可以通过使用关键字final来防止,同样,如何防止重载?
发布于 2010-06-07 15:28:49
在Java中不能这样做。
重载方法基本上只是另一种方法。
一次尝试可能看起来像这样。
void yourMethod(String arg) { /* ... */ }
void yourMethod(String arg, Object... prevent) {
throw new IllegalArgumentException();
}但它不会起作用,因为Java通过查看“最佳匹配”或“最具体的签名”来解决过载问题。
该方法仍然可以使用
void yourMethod(String arg, String arg2) { /* ... */ }它将在执行yourMethod("hello", "world")时被调用。
顺便说一句,你为什么要防止过载呢?也许还有另一种方法可以做你想做的事?
发布于 2010-06-07 15:35:18
你不能,因为这几乎毫无意义。
如果您想重载方法handle(..),但不允许这样做,那么您应该创建doHandle(..)。
使用哪个重载方法是在编译时确定的(与在运行时确定的重载方法不同)。因此,重载的要点是为常见操作共享一个通用名称。不允许这样做是一个代码风格的问题,而不是其他任何事情。
发布于 2010-06-07 15:49:10
呃..。不允许重载该方法的意义是什么?
防止重写是允许的,因为它可以由另一个程序员完成,该程序员应该正在处理代码的另一部分,而他的类是从您的类继承而来的。
重载是在同一个类中完成的,从逻辑上讲,重载应该由了解此代码并且正在处理代码的同一部分的程序员来完成。所以,如果他知道这段代码(理论上),而且重载存在一些固有的危险,那么他应该已经知道了,因为他知道这段代码。
也就是说,重载不能像其他人已经描述的那样停止。
https://stackoverflow.com/questions/2987732
复制相似问题