我知道如果你创建一个新的接口类型,你可以存储已实现该接口的对象,因为它们是相同的类型。
然而,它是否相反?假设您创建了一个新的类对象x,您可以在其中存储对象实现的接口吗?
答案 0 :(得分:0)
这是一个快速而简单的答案。您不能将父类强制转换为子类。
换句话说:
ParentClass parent = new ChildClass(); // VALID
ChildClass child = new ParentClass(); // INVALID
答案 1 :(得分:0)
Joel已经回答了主要问题,但仅仅是为了完整性,给出了:
interface Animal {}
class Dog implements Animal {}
class Cat implements Animal {}
Animal animal1 = new Dog();
Animal animal2 = new Cat();
Cat cat = new Cat();
Dog dog = new Dog();
animal1 = animal2; // since all animals are animals
animal1 = cat; // since all cats are animals
animal2 = cat; // since all cats are animals
animal1 = dog; // since all dogs are animals
animal2 = dog; // since all dogs are animals
cat = animal1;
因为我们只知道animal1
引用的对象它是动物,但我们不能保证它会是一只猫。
dog = animal1;
同样的情况发生在这里,我们已经看到一个例子,animal1
可以分配一只猫。换句话说,这是无效的,因为并非所有动物都是狗。