this和super

this和super

在这里插入图片描述

在setId方法中,出现了this,这里this用于表示当前对象。原因是参数名称id和属性名称id冲突。按照java中就近原则,在setId方法中使用的id是指参数,不是属性。如何引用属性,–this.id表示属性 this用于指代当前对象
在这里插入图片描述

如果没有临时变量和属性名称冲突,在类中所写的都是属性,此时是否使用this.都可以。如果出现了在方法中临时变量名称和属性名称一致,则需要使用this.表示属性,没有this.则是临时变量. super用于指代当前对象的父类中定义的成员,super是否能够访问取决于范围限定词
在这里插入图片描述

this和super方法

在这里插入图片描述
如果需要调用在子类中已经在这里插入图片描述被覆盖掉的父类中定义的方法Fa中的pp方法

在这里插入图片描述

扩展: this.pp()和super.pp():this.pp()表示调用当前对象中的pp()方法,super.pp()一般用于在子类中覆盖定义了pp方法,super.pp表示调用父类中定义的pp方法,而不是子类中定义的pp方法 this()和super()  只用于构造器方法定义中this()表示调用当前类中的另外一个构造器,()中可以带有参数。  
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326112548847.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODc0MTA3,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200326112558487.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1ODc0MTA3,size_16,color_FFFFFF,t_70)
  super()表示调用父类中的某个构造器,()中可以带有参数  new 子类()的执行过程:首先上溯子类的所有祖先类,然后再从上向下逐步执行各个层次父类的构造器Object—爷爷的构造器—父亲的构造器;最后才执行子类自己的构造器  因为每个类的构造方法中默认第一句话为super()表示调用父类的无参构造器,除非人为编程super(…)或this(…)调用其它构造器,系统才不会追加super()这个语句 特殊情况:  问题:父类中是否还有无参构造器?没有,因为只有当不定义构造器时,系统才提供一个无参构造器。当自定义构造器时,系统不再提供无参构造器  因为子类的构造器中没有显式调用父类构造器,所以子类构造器方法中第一句是super()表示调用父类中的无参构造器,但是父类中没有无参构造器,所以报错解决方案:super(123)表示调用父类的int类型参数的构造器要求:在构造器中使用super调用父类构造器时,这条语句必须是第一句话  总结:  this和super的三种用法:1、从语义的角度上说,this用于指代当前对象;s
发布了33 篇原创文章 · 获赞 27 · 访问量 1609
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览