> 文章列表 > JavaSE基础(19) super,this 关键字

JavaSE基础(19) super,this 关键字

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方法中。