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:无