如果我使用的是一个名为" Dog"它扩展了一个名为" Animal"有没有办法让构造函数使用一个带有Animal对象的参数,然后要求我不要使用super关键字来存储Animal对象所需的信息?感谢。
答案 0 :(得分:0)
不,因为您要制作原始Animal
的副本。这是因为Dog
是Animal
,您无法传递另一个Animal
并将其作为新对象的“父级”。
你应该这样做的方法是在你的父类(Animal)中创建一个复制构造函数,它接受相同类型的对象。
public Animal(Animal other) {
this.field1 = other.field1;
this.field2 = other.field2;
...
}
然后在Dog
课程中,你可以这样做:
public Dog(Dog other) {
super(other);
this.breed = other.breed;
...
}
答案 1 :(得分:0)
不自动,不。
现在Animal
本身可能有一个(用户创建的)“复制构造函数”样式构造函数,该构造函数接受Animal
实例并从中复制字段,您可以传递{{1}对象这个构造函数来做你想做的事。
答案 2 :(得分:0)
如果我使用的是名为“Dog”的课程
for (var i = 0; i <= 4; i++) {
A_Inside_Bus_div[i].innerText = i + ". " + snapshot.child("0/A_Inside_Bus " + i).val();
A_Inside_Bus_Comments_div[i].innerText = snapshot.child("0/A_Inside_Bus " + i + " Comments").val();
}
它扩展了一个名为“Animal”的类
class Dog {
}
有没有办法让构造函数
class Animal {
}
class Dog extends Animal {
}
使用带有Animal对象的参数
class Dog extends Animal {
Dog() {
}
}
然后要求我不要使用
class Dog extends Animal { Dog(Animal otherAnimal) { } }
关键字
↑↑↑↑在上面的代码中没有使用super
关键字↑↑↑↑
存储Animal对象所需的信息吗?
super
存储了信息,但仍未使用class Dog extends Animal {
Animal otherAnimal;
Dog(Animal otherAnimal) {
this.otherAnimal = otherAnimal;
}
}
关键字。