1.super关键字:
(1)子类构造方法调用父类构造方法:super()
class B{ public B() { System.out.println("1*****"); } } public class A extends B { public A() { super(); } }
输出结果:
1*****
(2)当子类继承父类时会覆写父类的方法,若想再访问父类方法使用super.方法()/super()属性
class B{ public void fun() { System.out.println("1******"); } } public class A extends B { public void fun() { super.fun(); System.out.println("2#######"); } }
运行结果:
1******
2#######
(3)子类调用被覆写的属性
super.属性
2.this关键字:
(1)表示本类属性:
当参数与类中属性同名时,使用this表示类中属性。 以后在类中方法中访问本类属性,一定要加this关键字。
public class A { public int a=2; public void fun(int a) { this.a=a; //当参数与类中属性同名时,使用this表示类中属性 System.out.println(a); } public void play(int b) { b=this.a; System.out.println(b);//方法中访问本类属性 } }
(2)表示本类方法(普通方法和构造方法)
this调用普通方法:this.方法名称(参数) this调用本类构造方法:this(参数) this调用构造方法必须在构造方法首行 调用构造方法不能成环。
public class A { public A() { System.out.println("我是人"); } public A(int a) { this(); //调用本类构造方法 System.out.println("我不是人"); } public void fun() { System.out.println("我是猪"); } public void play() { this.fun(); //调用普通方法 System.out.println("你是猪"); } }
(3)表示当前对象
3.super和this的区别
(1)概念上:
this:访问本类中的属性和方法。 super:由子类访问父类中的属性,方法
(2)查找范围:
this:先查找本类,如果本类没有就调用父类 super:不查找本类,直接调用父类
(3)特殊:
this:表示当前对象 super:无