关于继承的一些问题

关于继承的一些问题

  1. 子类定义了和父类相同类型、名称的属性,那么子类对象可以调用父类的该名称的属性吗?怎么调用?

  2. 子类重写了父类的方法,那么子类对象可以只调用父类的方法而不运行子类重写的方法吗?如果可以怎么实现?

  3. 子类继承父类并重写方法后,子类对象执行重写方法的调用顺序是怎样的?

正在回答

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

2回答

同学你好,第一个问题:子类可以调用父类的属性名称吗?

这个要求:首先要求父类的属性为public,然后子类对象.属性, 这样来调用父类的属性,或者父类的属性前不加修饰符,默认为protected,然后在子类函数中通过 super.属性 来调用父类的属性。

第三个问题:子类中的重写方法,在测试类中,实例化子类对象后,默认调用的就是子类重写父类后的方法,如果实例化的是父类对象,调用的就是父类中的方法。所以说子类中的重写方法的调用与父类的代码执行顺序没有关系。

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

好帮手慕小班 2019-05-08 11:52:03

同学你好,第一个问题:类定义了和父类相同类型、名称的属性,子类对象可以调用父类的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();
	}
}

输出结果为:

http://img1.sycdn.imooc.com//climg/5cd2508500010d1d02930136.jpg

species为公开的属性,就可以调用,或者也能调用该名称属性的公开的get/set方法。

第二个问题:子类重写了父类的方法,那么子类对象只能调用父类中被重写的子类方法。

例如,cat对象调用eat方法,只能调用重写后的方法,因为重写相当于覆盖,就无法调用原来的了。

第三个问题,子类继承父类并重写方法后,子类对象执行重写方法的顺序与父类的执行顺序相同。

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

  • 提问者 _NAVL_ #1
    第一个问题,你举得例子没有回答清楚我的问题,第三个问题我的意思是子类中的重写方法执行会受到父类被重写方法的影响吗?
    2019-05-08 12:51:08
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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