关于继承的一些问题
子类定义了和父类相同类型、名称的属性,那么子类对象可以调用父类的该名称的属性吗?怎么调用?
子类重写了父类的方法,那么子类对象可以只调用父类的方法而不运行子类重写的方法吗?如果可以怎么实现?
子类继承父类并重写方法后,子类对象执行重写方法的调用顺序是怎样的?
正在回答
同学你好,第一个问题:子类可以调用父类的属性名称吗?
这个要求:首先要求父类的属性为public,然后子类对象.属性, 这样来调用父类的属性,或者父类的属性前不加修饰符,默认为protected,然后在子类函数中通过 super.属性 来调用父类的属性。
第三个问题:子类中的重写方法,在测试类中,实例化子类对象后,默认调用的就是子类重写父类后的方法,如果实例化的是父类对象,调用的就是父类中的方法。所以说子类中的重写方法的调用与父类的代码执行顺序没有关系。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,第一个问题:类定义了和父类相同类型、名称的属性,子类对象可以调用父类的public修饰的公开的名称的属性。例如:
public class Animal { //父类对象 动物 private String name; //父类属性 名称 public String species; //父类公开属性 物种 public Animal() { } public Animal(String name, String species) { this.name = name; this.species = species; } public void eat(){ System.out.println("动物会吃饭"); } }
public class Cat extends Animal{ //子类对象Cat继承父类Animal public Cat() { } public Cat(String name, String species) { super(name, species); } public void eat(){ System.out.println("物种为:"+super.species); System.out.print("猫爱吃鱼"); } }
public class Test04 { //测试方法 public static void main(String[] args) { Animal cat= new Cat("毛毛","猫科动物"); animal1.eat(); } }
输出结果为:
species为公开的属性,就可以调用,或者也能调用该名称属性的公开的get/set方法。
第二个问题:子类重写了父类的方法,那么子类对象只能调用父类中被重写的子类方法。
例如,cat对象调用eat方法,只能调用重写后的方法,因为重写相当于覆盖,就无法调用原来的了。
第三个问题,子类继承父类并重写方法后,子类对象执行重写方法的顺序与父类的执行顺序相同。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星