关于继承的一些问题
来源:2-6 方法重写后的碎碎念
_NAVL_
2019-05-07 19:17:36
子类定义了和父类相同类型、名称的属性,那么子类对象可以调用父类的该名称的属性吗?怎么调用?
子类重写了父类的方法,那么子类对象可以只调用父类的方法而不运行子类重写的方法吗?如果可以怎么实现?
子类继承父类并重写方法后,子类对象执行重写方法的调用顺序是怎样的?
2回答
同学你好,第一个问题:子类可以调用父类的属性名称吗?
这个要求:首先要求父类的属性为public,然后子类对象.属性, 这样来调用父类的属性,或者父类的属性前不加修饰符,默认为protected,然后在子类函数中通过 super.属性 来调用父类的属性。
第三个问题:子类中的重写方法,在测试类中,实例化子类对象后,默认调用的就是子类重写父类后的方法,如果实例化的是父类对象,调用的就是父类中的方法。所以说子类中的重写方法的调用与父类的代码执行顺序没有关系。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
好帮手慕小班
2019-05-08
同学你好,第一个问题:类定义了和父类相同类型、名称的属性,子类对象可以调用父类的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方法,只能调用重写后的方法,因为重写相当于覆盖,就无法调用原来的了。
第三个问题,子类继承父类并重写方法后,子类对象执行重写方法的顺序与父类的执行顺序相同。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题