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
的类型是什么?这里到底发生了什么?谢谢。
答案 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
里面的还有两个构造函数Dog
和public Dog
从上面对象的声明中,你可以调用你将使用的构造函数。
更好地阅读java文档以进一步学习click here