举个例子
比如说我们会用到一个BaseServlet作为父类,一众子类来实现更多的扩展功能,但是在一些共用的功能中,如权限控制,统一检查是否登陆,在这种情境下,我们若是使用父类来进行统一的处理,让子类通过继承会方便很多。
但是这样也会有一个问题:比如说在BaseServlet中进行反射时,如果写死是BaseServlet的类对象,哪怕是被继承也没有实际意义,我们需要更灵活的方式来让类对象在被继承的时候去成为相应的子类的类对象,使用this就可以很好的解决我们的问题
Class clz = this.getClass();//class被继承后成为相应的子类Class,而不是BaseServle
接下来的问题是:我们这么麻烦的拿到的类对象有何意义?答案是为了反射
我们可以通过反射来通过类名方法名去调用某个方法,前提是我们需要获得相应实现类的类对象
总结一下,在这个过程中,我们使用三种工具
1.继承 目的是为了让一些公用的代码在父类中统一进行处理
2.this 在子类继承父类之后,哪怕是在父类中进行的一些有关类对象的操作也可以被继承之后灵活的成为相应子类实现类的类对象,要知道,BaseServlet存在的意义并不是它本身的被调用,而是解耦代码,方便调试;还有真正进行有意义的实现仍然是子类所为。
3.反射 反射可以更方便的拿到类与方法,只要我们知道他们的名字,就可以动态的获取其对象,并进行一些操作。