为了账号安全,请及时绑定邮箱和手机立即绑定

关于super的问题

//Animal类:
public class Animal {
public int age = 110;
public String name;
public void eat(){
System.out.println("动物具有吃东西的能力");
}
public Animal(){
System.out.println("Animal类执行");
age = 210;
}
}
//dog类继承Animal类:
public class Dog extends Animal {
	

	public Dog(){
		System.out.println("Dog类执行了");
		System.out.println("这里是dog的构造函数,现在Age of the Animal is:" + super.age);
	}
	public void eat(){
		System.out.println("狗是可以吃东西的");
		System.out.println("这里是dog类内的eat函数,现在Age of the Animal is:" + super.age);
	}
}
//初始化类:
public class Initial {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Animal animal = new Animal();
		System.out.println(animal.age);
		Dog dog = new Dog();
		dog.age=110;
		dog.name="Bobby";
		dog.eat();
	}

}

显示结果:

Animal类执行

210

Animal类执行

Dog类执行了

这里是dog的构造函数,现在Age of the Animal is:210

狗是可以吃东西的

这里是dog类内的eat函数,现在Age of the Animal is:110

为什么在eat函数里print年龄的时候,就是显示主函数给狗的年龄了?难道不应该是父类animal的年龄吗?求解。

正在回答

1 回答

dog类继承了animal类,dog类没有定义自己的age, 这种情况下Dog类和Animal类的age是同一个。

0 回复 有任何疑惑可以回复我~
#1

闰冬秋拾 提问者

但是既然你是继承Animal类,肯定是先有Animal类再有Dog类,那么在Dog类内调用super.age的时候不应该是Animal类的age,为210吗?难道说主函数给Dog赋值的age能影响到他的父类Animal?这个因果关系有问题吧?
2016-07-19 回复 有任何疑惑可以回复我~
#2

闰冬秋拾 提问者

非常感谢!
2016-07-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530631    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

关于super的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信