变量声明

时间:2017-03-17 07:39:37

标签: java variables inheritance types declaration

Animal animal = new Animal();

Animal animal2 = new Dog();

Dog animal3 = new Dog();


public class Animal {

    int age;
    String name;

    public Animal() {
        name = "Empty";
        age = 0;
    }

    public Animal(int a, String n) {
        name = n;
        age = a;
    }

    public void move() {
        System.out.println("Moved");
    }
}

public class Dog extends Animal {

    public Dog() {
        this.name = "dog";
        this.age = 0;
    }

    public Dog(int a, String n){
        this.name = n;
        this.age = a;
    }
}

嗨,我正在学习Java,我想了解它们之间的区别。我知道animal属于Animal类型,animal3类型为Dog但animal2的类型是什么?这里到底发生了什么?谢谢。

3 个答案:

答案 0 :(得分:1)

Like

Animal animal2 = new Dog(); 类是Dog的子类,因为类Animal继承了类Dog的属性,因为Class Animal的引用保存了它的子类的对象, class Dog但是如果你想在类Dog中使用Animal的调用方法。将调用类override的方法。

回答你的问题:

对象Dog是类型类Dog。但它的引用变量为animal2

答案 1 :(得分:0)

动物动物2 =新狗(); 这来自于骑行Concept.Over Riding是一个多态概念,其中父类的方法由子类使用。

答案 2 :(得分:0)

git log --author="Tri Nguyen" --oneline --shortstat --before="2017-03-20" --after="2017-03-10" > /mnt/MyChangeLog.txt

这三行是​​你对三个对象 Animal animal = new Animal(); Animal animal2 = new Dog(); Dog animal3 = new Dog();

的声明

从你的主要类Animal中你有两个不同的构造函数

首先是anima animal2 animal3,其中没有任何参数,第二个是public Animal()

之后你有一个子类public Animal(int a, String n),它继承了你的主类Dog的属性

你子类Animal里面的

还有两个构造函数Dogpublic Dog

从上面对象的声明中,你可以调用你将使用的构造函数。

更好地阅读java文档以进一步学习click here