多语言展示
当前在线:1170今日阅读:103今日分享:49

static final可以修饰成员方法

来了解下被static final修饰的成员方法有什么含义和特殊之处。
工具/原料
1

Eclipse(4.7 Oxygen)

2

Jdk(1.8)

方法/步骤
1

首先,static final,这是两个关键字,一般来说都是单独使用的,一起使用实际上没有什么意义。 下面听听我的分析。当final被用来修饰方法时,它的作用是防止该方法被子类重写,来看看方法被子类重写的场景。Bpp继承了App,并且重写了类App中的成员方法start(), 这时当Bpp对象在调用App中的check方法时,check调用的是被重写后的start方法,这种用法一般会在设计模式中的'模板'模式中应用。

2

然后,我们在App的start方法上加上final关键字看看, 在Bpp中报编译错误了,说明被final修饰的成员方法是不能被重写的。

3

然后,我们给App的start加上static关键字,让其成为类级别的方法,可以看到在Bpp中虽然重写了方法,但App依然调用的是原来的方法。

4

最后,我们加上完整的static final字段,  Bpp重编译报错, 说明被final修饰的类方法是不能被重写的。

5

总结一下,既然static的方法在被子类重写之后并不会影响到原方法的调用,那就失去了重写方法的重要功能,也就没什么必要在static方法上加上final关键字了。

注意事项

如果非得不让子类中重写类方法,加上final关键字也是没有问题的,但是,我觉得没什么意义。

推荐信息