java的子类和父类中的super、this的区别?

2024-12-04 15:04:16
推荐回答(5个)
回答(1):

对,没重写那super.add() 和this.add() 都是调的父类的方法, 没什么区别,如果重写了this.add()就默认调本类的方法,super就默认调父类的方法,

再在子类中,都不写的话,如果有重写父类的add()方法的话就默认调本类的add()方法, 如果本类没有重写就调父类的方法,

其实这种问题建议你直接写一个小代码一目了然,比如:
class A{

void add(){
System.out.println("天下无双");
}
}
class B extends A{
void add(){

System.out.println("天下无贼");
}
void aa(){
add();
super.add();
}
}
public class aaaaaaa {

public static void main(String[] args) {
A a=new A();
B b=new B();
b.aa();

}

}

你可以试试, 我也是新手, 对这种问题还是比较喜欢自己动手, 听别人说总有点云里雾里的, 可以加我Q互相讨论一下494792360

回答(2):

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,new这个子类的实例对象后。使用super来引用父类对象,使用this引用当前对象。

举例:

public class F{//定义父类
   public void s(){//定义父类方法s
   }
}
public class K extends F{//定义子类K,继承父类F
   public void s(){//定义子类方法s,覆盖父类s
   }
   public void k2(){
     super.s();//通过super,指明调用父类的方法s
     this.s();//通过this,指明调用当前类的方法s
   }
}

回答(3):

当有相同的属性或者方法是this子类表示调用自己的属性或者方法,super调用父类的属性或者方法。当子类调用的属性方法在子类中不存在时,那么this和super都是调用父类的属性或者方法

回答(4):

默认是 this.xxx

回答(5):

没有重写的话就没有什么区别。