来了解下被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关键字也是没有问题的,但是,我觉得没什么意义。
上一篇:山寨基站强推垃圾短信怎么办
下一篇:怎么调用static类的方法