请问为什么在petMap.put那里,Pet类的对象可以用new Cat(),new Dog()构造,这跟构造器有什么不同?涉及到了具体哪块知识?并且为什么在输出时,Cat Dog也能出现在输出结果里?恳请点拨!
import typeinfo.pets.*
import java.util.*
import static net.mindview.util.Print.*
public class PetMap {
public static void main(String[] args) {
Map<String, Pet> petMap = new HashMap<String, Pet>();
petMap.put("My Cat", new Cat("Molly"));
petMap.put("My Dog", new Dog("Ginger"));
petMap.put("My Hamster", new Hamster("Bosco"));
print(petMap);
Pet dog = petMap.get("My Dog");
print(dog);
}
}
/* Output:
{My Cat=Cat Molly, My Hamster=Hamster Bosco, My Dog=Dog Ginger}
Dog Ginger
你说的应该是继承吧?定义一个接口,然后用类去实现,就可以实现你说的构造了(父类引用指向子类)。是java三大特种之一的多态里面的内容。
例子:
接口如下:
实现类如下:
测试类代码如下: