super与this的区别

super与this的区别

1.子类的构造函数如果要引用super的话,必须把super放在函数的首位. classBase{

Base(){

System.out.println("Base");

}

}

publicclassChecketextendsBase{

Checket(){

super();//调用父类的构造方法,一定要放在方法的首个语句

System.out.println("Checket");

}

publicstaticvoidmain(Stringargv[]){

Checketc=newChecket();

}

}

如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。

2.在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类)中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高,所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法,但是我们如果想要使用超类中的这个成员变量或方法,就需要用到super.

classCountry{

Stringname;

voidvalue(){

name="China";

}

}

classCityextendsCountry{

Stringname;

voidvalue(){

name="Hefei";

super.value();//不调用此方法时,super.name返回的是父类的成员变量的值null

System.out.println(name);

System.out.println(super.name);

}

publicstaticvoidmain(String[]args){

Cityc=newCity();

c.value();

}

}

super与this的区别相关文档

最新文档

返回顶部