[分享]this,super的用法说明和比较
在java编程中,this和super我可能常用,大家有的时候也不是很注意他的具体意义在那里.也许大家都知道这个两个关键字的意义所在,可是他的具体用法就不是那么清楚.首先我们回忆一下,是否在很多时候我们没有用到这两个关键字呢,不知道大家有没有注意到,在老外写的代码中却经常见到.这一点我想大家都不得不认同,老外做事情就是规范.我们什么时候用什么时候不用呢.
this,super一个是指向当前类的对象,super是指向父类对象,其实他们的用法并不一样的.以super为例.
它主要用在构造器中,当然也有在方法中使用,我不推荐这么用,既然是重载父类的方法,就没有必要调用父类的方法,当然也不能一概而论.super在子类访问父类的成员和行为,这就必须受类继承规则的约束,也就是说子类可见的资源才能被super 访问.而this就有点不一样,他代表当前对象,当然所有的资源都可以访问.
在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.
大多数情况下,我们都回采用默认的方式 ,即父类存在无参数的构造器,子类不用采用编译器默认的插入方式.但是我还是建议大家加上super()这句.这样程序的代码兼容性和结构性好.这也老外的风格.