在程序设计中常常都有“框架”和“应用”两个词。先有框架,框架之下才是应用。应用是遵循框架的规则制定的。如果这种“框架”与“应用”的设计思想更广义的理解,Java语言就可以理解为设计模式的“应用”。姑且允许我这样理解,我才能往下写。
在Java中常常看到关键字public、protected、private,这种关键字的用意是什么呢?站在我上面的观点,我给出解释。
设计模式中有个Hook函数(Hook函数的相关认识请移步,或自行查阅资料)。在Java中有两种方式实现Hook。一种是类的继承;另一种是实现接口。public、protected、private就是用来控制Hook函数的手段。
类的继承实现Hook:
除了private的其他关键字修饰的类或者函数都允许实现Hook。public修饰的函数既可以实现Hook,也能做到用以对象调用。
接口实现Hook:
接口的关键字必须以默认或者public修饰,接口里面的抽象函数也是必须是默认或者public修饰。所以接口的定义必须是允许实现Hook的。public修饰的函数也是允许对象调用的。默认修饰只能起实现Hook的作用。
所以我把Java关键字(public、protected、private)认为是控制Hook函数的手段。也就是那些关键字(应用)的背后是Hook函数(框架)的影子。