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

如果我先创建了一个父类

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,子类中不是进行赋值了吗???                                                                                                

慕的地1533170
浏览 1400回答 4
4回答

Its_forever

你这两句: 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();

儁破孩

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

1014407916

public calss cat 这是什么鬼?

星际怪物

Animal age1 = new dog(); //age1 向上转型为Animal,System.out.println(...., age1.age)//此处 age1.age 就是 super.age,为0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java