java中的this,super关键字
来源:互联网 发布:udp端口打开 编辑:程序博客网 时间:2024/05/17 08:56
说到this,可能大部分人知道是指代当前对象的引用,最常见的就是在构造函数中对一些基本的属性进行初始化赋值。
public class Student { int id; String name; public Student(int id,String name){ this.id=id; this.name=name; } public static void main(String[]Args){ Student ss=new Student(001,"南瓜灯"); } }
像这样对id,name进行初始化是经常所用到的。除此之外,还有通过this对其他构造函数的调用:
public class Student { int id; String name; public Student(){ this(001, "南瓜灯"); System.out.println("无参构造函数"); } public Student(int id,String name ){ this.id=id; this.name=name; System.out.println("有参构造函数"); } public static void main(String[]Args){ Student ss=new Student(); } }
执行后的结果为:
有参构造函数
无参构造函数
也很好一节,this()掉=调用了另一个有参的构造函数。这里应该注意的是,在使用this()调用另一个构造函数的时候,只能把this()放在构造函数里的第一句,否则会出现Constructor call must be the first statement in a constructor的问题。
然后就是关键字super
super是直接父类对象的引用,可以通过super来访问父类中被子类覆盖的方法和属性下面举一个简单的例子说明:
class Animal {//父类Animal public void eat(){ System.out.println("吃中....");}}class Bird extends Animal{//子类Bird<pre name="code" class="java"> public void fly(){ super();System.out.println("飞...");}
}public class Test { public static void main(String[]args){ Bird bd=new Bird(); bd.eat();}}子类Bird继承父类Animal,说到现在好像还没看到要说的重点,其实在父类的eat()方法与子类的fly方法中,隐含有一个方法,叫做super.即实际在eat方法中,应该是这样的:
public void eat(){ super();//隐含的 System.out.println("吃中....");}子类fly()方法中,应该是这样的:
public void fly(){ super();//隐含的System.out.println("飞...");}当然两个super()所指向的不同,父类super()指向的为Object,子类BIrd指向的为父类的Animal
而且实际两个方法看似是空的,没有参数,实际也有默认的参数,就是我们这里所说的this,supe
public void eat(this,super){}public void fly(this,super){}当然了我们不能把默认的this与super手动加上。说到这些,我们就可以看看上面整段代码在底层的运行效果:
先new一个Bird,然后执行到super()的时候,调用父类,一直向上,直到到Object,看过这图应该对执行的顺序有了一个清醒的认识
然后换一个图的方式:
可以看出子类对父类是一种包含关系,好了,说到这里,相信对this以及super有了一些认识吧
0 0
- java中的this,super关键字
- Java中的this、super关键字
- Java中的super关键字与this关键字
- java中的super关键字和this关键字
- java中的this,和super关键字
- JAVA中的关键字--this和super
- java中的this、super、static关键字
- java中的super与this关键字
- java中的this和super关键字
- java中的this和super关键字
- Java中的super和this关键字
- java this和super关键字
- java中this & super关键字
- [java]关键字this和super
- Java中super、this关键字
- java -- this和super关键字
- java关键字super和this
- Java关键字:this、super、static
- 插入排序
- 插件
- 浅谈web应用成长的三个阶段
- linux下使用openssl对文件RSA加密解密
- HTML5本地存储sessionStorage和localStorage的常用操作
- java中的this,super关键字
- 解决Ubuntu下Sublime Text 2/3无法输入中文
- nagios nrpe插件读文件时注意是否拥有权限
- POJ 1011 Sticks dfs
- 提高效率之网盘在开发工作中的妙用
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- 搞懂CSMA/CD,你就明白为什么以太网最小帧是64字节。
- AndroidManifest问题
- CocoaPods导入第三方库头文件自动补齐