界面与具体类

use*_*254 15 java

下面我有一个Person接口,一个实现类和一个驱动程序类,它使用一个名称初始化Person并再次输出它.使用的优点是什么

Person person = new PersonImpl();
Run Code Online (Sandbox Code Playgroud)

代替

PersonImpl person = new PersonImpl();
Run Code Online (Sandbox Code Playgroud)

该接口应该隐藏实现?这是使用接口的正确方法吗?

public class Driver {

    public static void main(String [] args)
    {
        Person person = new PersonImpl();
        person.setName("test name");
        System.out.println("Name is "+person.getName());
    }

}


public interface Person {

    public void setName(String name);

    public String getName();

}


public class PersonImpl implements Person{

    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ala*_*nse 13

这是使用接口的方式.

原因是你可以在不改变使用的代码的情况下编写另一个实现Person.

所以现在你可以使用,PersonImpl但稍后你可能需要一个OtherTypeOfPersonImpl.

您可以创建实现相同接口的新类,并且可以将新类与任何其他期望的代码一起使用Person.

一个很好的例子是List界面.

有多种实现方式List,例如ArrayList,LinkedList等.其中每一个都有优点和缺点.通过编写使用的代码List,您可以让每个开发人员决定哪种类型的List工作最适合他们,并且能够在不做任何更改的情况下处理任何类型的工作.