什么是从接口实例化的对象

时间:2014-02-04 14:19:26

标签: java interface

有这样的界面:

public interface Person {
    public String getName();
}

然后有一个类Student实现Person

public class Student implements Person {

    private int id;
    private String name;

    public setId(int id) {
        this.id = id;
    }

    public getId() {
        return id;
    }

    public setName(String name) {
        this.name = name;
    }

    public getName() {
        return name;
    }

}

Person的实例在运行时会是什么样子?我如何实例化?

4 个答案:

答案 0 :(得分:8)

您无法实例化界面。

您可以做的是实例化界面的实施 - 在您的情况下,Student

Person s = new Student();

在这种情况下,s将实现Person,您可以使用以下方式进行检查:

boolean isPerson = (s instanceof Person);

将评估为true

答案 1 :(得分:1)

您无法实例化Person is it interface

你只能像

那样实例化学生
    Person p1= new Student();

             or 
   Student S1 = new Student();

答案 2 :(得分:1)

你永远不能在java中实例化interface。但是,您可以通过接口类型引用实现接口的对象。例如,

 Person test = new Student();

答案 3 :(得分:1)

正如其他答案中所述,Person是一个接口,因此无法实例化。因此,在实现类的构造函数中包含参数是有用的,因为后者的setter不能直接从Person引用访问

public Student(int id, String name) {
    this.id = id;
    this.name = name;
}

以便初始化

Person s = new Student(1, "Jon Smith");