Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法中允许哪些对象_Java_Class - Fatal编程技术网

Java 方法中允许哪些对象

Java 方法中允许哪些对象,java,class,Java,Class,我有一个一般性问题。假设我有以下结构: interface IFirst{} class A implements IFirst{} class B extends A{} interface Animal class Dog implements Animal class Cat implements Animal class Husky extends Dog class SmallDog extends Dog class Chihuahua extends SmallDog 此外,还

我有一个一般性问题。假设我有以下结构:

interface IFirst{}
class A implements IFirst{}
class B extends A{}
interface Animal
class Dog implements Animal
class Cat implements Animal
class Husky extends Dog
class SmallDog extends Dog
class Chihuahua extends SmallDog
此外,还有以下类别:

class TestClass{
    public dummy(IFirst data){}
 }

那么虚拟方法接受哪种类型的对象呢?

它很简单,每个对象都以某种方式实现了接口
IFirst
。 在您的示例中,这是
A
B
,因为
B
扩展了
A
,后者是
IFirst
,所以
B
也是
IFirst

下面是另一个示例,其结构如下:

interface IFirst{}
class A implements IFirst{}
class B extends A{}
interface Animal
class Dog implements Animal
class Cat implements Animal
class Husky extends Dog
class SmallDog extends Dog
class Chihuahua extends SmallDog

一切都是
Animal
类型(此处:)

它接受实现
IFirst
接口的所有类的实例(包括
A
B
以及其他实现,如果它们存在的话),它还接受
null
,方法签名语法不正确,无法编译。在询问之前,您可以很容易地对此进行测试。