this和super
因为子类会默认继承父类的可以访问的属性和方法,所以使用this调用父类方法、甚至是在没有同名传参影响下,省略this直接写父类方法名,都可以调用父类方法。
那么,1、super与this、或者连this都省略的调用写法到底的独特之处在哪里?
2、在子类方法重写、属性重新写了与父类同类同名的属性后,老师,使用this调用父类的原方法,是调子类重写后的,还是父类的原方法?
3、this能不能调用父类构造方法?
7
收起
正在回答
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
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星