[英]final and private static
我读到了这样做:
public final void foo() {}
等于:
private static void foo() {}
两者都意味着该方法不可覆盖!
但是,如果一个方法是私有的,我自动无法访问,我没有看到等价...
确实,你不能@Override
任何一种方法。 您只能@Override
非final
实例方法。
final
,那么你无法@Override
它 static
,那么它不是一个开始的实例方法 他们“平等” 并不是真的,因为一个是private static
,另一个是public final
。
static
上下文中的实例方法/字段 你不能@Override
一个static
方法,但你可以用另一个static
方法隐藏它。 当然, static
方法不允许动态分派(这是由@Override
完成的)。
两者都不能被覆盖,但原因各不相同。 第一种是公共非静态方法,而secod是静态的。 所以第一个是不可覆盖的,因为它已被声明为final,而第二个是静态的,永远不能被覆盖。
请注意,从第一个开始,您可以访问类的非静态成员,而从第二个开始,您不能。 因此它们以非常不同的方式使用,因此不是“平等的”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.