this和super

this和super

因为子类会默认继承父类的可以访问的属性和方法,所以使用this调用父类方法、甚至是在没有同名传参影响下,省略this直接写父类方法名,都可以调用父类方法。

那么,1、super与this、或者连this都省略的调用写法到底的独特之处在哪里?

2、在子类方法重写、属性重新写了与父类同类同名的属性后,老师,使用this调用父类的原方法,是调子类重写后的,还是父类的原方法?

3、this能不能调用父类构造方法?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,你的理解是正确的。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

好帮手慕珊 2019-05-04 14:04:02

你好!

1、关于第一个问题,没有什么独特之处,分别理解这几种调用的使用方式就可以了。this调用的不是父类的方法,确切说调用的是从父类继承下来的方法,这个方法已经被子类拥有了,所以用this可以去调用。this.方法名()和方法名()这两种调用,都是调用当前类的方法。super主要是对父类成员的调用。如下代码所示:分别调用了子类重写的方法和父类的方法。同学也可以在此代码基础上做其他的尝试。

public class Animal {
private String name;
private int age;
public Animal() {}
public Animal(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void display() {
System.out.println("Animal...");
}
}
public  class Cat extends Animal{
private String color;
public Cat() {
}
public Cat(String name, int age,String color) {
super(name,age);
this.color = color;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void display() {
System.out.println("cat..");
}
public void info() {
super.display();
display();
}
}
class Test {
public static void main(String[] args) {
Cat cat=new Cat();
cat.info();
}
}

2、如果子类重写了父类的方法,那么使用this调用的时子类重写后的方法

3、this不能调用父类构造方法,调用父类构造方法用super

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 鱼儿0001 #1
    谢谢老师,我懂了。原来this调用的是继承下来的隐含的父类方法,super时直接回父类调用父类的方法了,它们的调用其实在这里是不一样的吗?
    2019-05-05 15:41:34
  • 好帮手慕珊 回复 提问者 鱼儿0001 #2
    这么理解,如果子类没有重写父类的方法,这时候用super和this调用方法效果是一样的。如果子类重写了方法,那么使用this和super就不一样了。祝学习愉快!
    2019-05-05 16:28:35
  • 提问者 鱼儿0001 回复 好帮手慕珊 #3
    重写后,this调用的就是重写的方法,super调用的就是父类原先的方法,是这样吗
    2019-05-05 17:41:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师