JavaSE基础(19) super,this 关键字
子类对象的创建过程:
子类的构造方法中,默认先调用父类的无参构造方法。如果没有显示的调用,那么隐含着super()。
super关键字:
可以访问父类的属性
可以访问父类的方法
指代父类的构造方法, 如果有多个,靠参数来区分。要在第一行。
this关键字:
作为本类的对象,
访问本类的属性。如果在继承中,本类没有这个属性,那么再找父类中。
访问本类的方法
可以指代本类的构造方法:this()。要在第一行。
public class A {int i;int j;public void testA(){System.out.println("i:"+i);System.out.println("j:"+j);}public void fun(){System.out.println("父类的fun方法....");}
}
//实际开发不建议这么写,
class B extends A{int i;//和父类有相同的属性public void testB(){System.out.println("i:"+super.i);//要想访问父类的属性,那么就用superSystem.out.println("j:"+j);//访问父类的fun方法super.fun();}@Overridepublic void fun(){System.out.println("子类的fun方法....");}
}
this和super的对比:
比较点 |
this |
super |
访问属性 |
首先在子类中查找,如果没有就在父类中查找 |
直接查找父类 |
访问方法 |
先在子类中找,如果没有就去父类中查找 |
直接访问父类中方法 |
调用构造 |
调用本类中的其他构造方法 |
调用父类的构造方法 |
特殊 |
指自身的引用 |
没有概念 |
this,super关键字,不能出现在static方法中。