一个子类已经继承了父类的所有方法,子类也未去重写这些方法,这些方法实际上已经属于子类,那么子类调用这些方法时,该用this还是super呢?虽然不管用哪个,结果都是一样的,但如何用才符合这两个关键词的意义呢
哈哈,,同学,你明显犯了一个逻辑上的错误,我慢慢给你说清楚,
我写一个实例给你看看就明白了
class Fu
{
static void method1()
{
System.out.println("method1");
}
static void method2()
{
System.out.println("method2");
}
}
class Zi extends Fu
{
void ZiMethod()
{
this.method1();
super.method1();
}
public static void main(String[] args)
{
Zi z = new Zi();
z.method1();
z.ZiMethod();
}
}
子类继承了父类,父类里面的非私有方法子类也有,那么子类调用this.method1(); 这时是调用子类里面的方法而不是调用父类的,因为子类又没有去覆写
父类里面的方法,而super.method1();是调用父类的方法,
所以子类调用的方法和父类的一模一样。两个输出的结果也是一模一样。所以按照你说的那种两种方式就结果而言没有什么区别。
首先,this是本类对象使用的,意思是代表本类的一个对象,super代表可以调用父的一个方法,从某种意义上说也可以代表父类的对象。super还可以调用父类的构造方法,这个是子类所做不到的。如果用super去调用子类的特有的方法就行不通了。
总结,子类继承了父的,可以用this调用,如果没有继承,只能用super。当子类需要用到父类
里面的一个成员时,而子类又没有继承过来这里只能用到super,比如,父类的构造方法。
|