Java - Can对象可以存储其接口类型吗?

时间:2016-04-02 04:40:54

标签: java interface

我知道如果你创建一个新的接口类型,你可以存储已实现该接口的对象,因为它们是相同的类型。

然而,它是否相反?假设您创建了一个新的类对象x,您可以在其中存储对象实现的接口吗?

2 个答案:

答案 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可以分配一只猫。换句话说,这是无效的,因为并非所有动物都是狗。