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

关于继承的问题 求大神回答

关于继承的问题 求大神回答

慕的地1533170 2016-04-04 17:03:43
如果我先创建了一个父类public class Animal {     public int age; } //赋予了属性,没有初始化值, 然后创建个子类 ,继承父类,但是每种动物活着的年龄不同,所以我创建的子类中对age这个属性进行了赋值:public class dog extends Animal {public int age=20;   }//第一个子类public calss cat extends Animal{public int age=30; }//第二个子类.然后在测试类里进行调用运行public class Chaxun {public static void main(String[] args) { // TODO Auto-generated method stub           Animal age1=new dog();          Animal age2=new cat();System.out.println("狗的寿命是"+age1.age)System.out.println(“猫的寿命是"+age2.age)         }}       //这样输出为什么age的值是0,子类中不是进行赋值了吗???                                                                                                
查看完整描述

4 回答

已采纳
?
Its_forever

TA贡献361条经验 获得超328个赞

你这两句:
Animal age1=new dog();
Animal age2=new cat();
相当于向上转型,age1和age2都指向的是animal这个父类。
所以age1.age和age2.age都是输出父类的age,默认值为0。

如果你想输出之类的age,改成这样:
dog age1=new dog();
cat age2=new cat();


查看完整回答
1 反对 回复 2016-04-04
?
儁破孩

TA贡献19条经验 获得超5个赞

在多态中,注意属性没有多态的概念,只有方法才有多态的概念。属性的值是多少由声明时类型(也就是编译类型)的对象决定,而方法的调用由实际对象的类型(也就是运行时类型)所决定。如果这里子类去重写父类的某个方法,那么这里你去调用重写的方法,会出现什么样的情况呢?自己去实践o(∩_∩)o

查看完整回答
1 反对 回复 2016-04-04
?
1014407916

TA贡献6条经验 获得超0个赞

public calss cat 这是什么鬼?

查看完整回答
反对 回复 2016-04-04
?
星际怪物

TA贡献31条经验 获得超10个赞

Animal age1 = new dog(); //age1 向上转型为Animal,

System.out.println(...., age1.age)//此处 age1.age 就是 super.age,为0

查看完整回答
反对 回复 2016-04-04
  • 4 回答
  • 1 关注
  • 1426 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信