相关疑难解决方法(0)

Java - 从Interface类型而不是Class声明

在我正确掌握接口最佳实践的过程中,我注意到了以下声明:

List<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

代替

ArrayList<String> myList = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)

- 要我的理解,是因为它可以让有一天你不希望实现一个ArrayList但也许另一种类型列表的情况下的灵活性.

有了这个逻辑,我建立了一个例子:

public class InterfaceTest {

    public static void main(String[] args) {

        PetInterface p = new Cat();
        p.talk();

    }

}

interface PetInterface {                

    public void talk();

}

class Dog implements PetInterface {

    @Override
    public void talk() {
        System.out.println("Bark!");
    }

}

class Cat implements PetInterface {

    @Override
    public void talk() {
        System.out.println("Meow!");
    }

    public void batheSelf() {
        System.out.println("Cat bathing");
    }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是,我无法访问batheSelf()方法,因为它仅适用于Cat.这使我相信,我应该只从接口中声明,如果我只打算使用的接口(而不是从子类中额外的方法)声明的方法,否则我应该直接从类(在这种情况下,猫)申报.我在这个假设中是否正确?

java interface

38
推荐指数
3
解决办法
2万
查看次数

编程到接口是什么意思?

我一直听到大多数与节目相关的网站上的声明:

编程到接口而不是实现

但是我不明白其含义?
例子会有所帮助.

编辑:我收到了很多好的答案,所以你可以用一些代码片段来补充它,以便更好地理解这个主题.谢谢!

java interface

19
推荐指数
5
解决办法
5911
查看次数

Java中的FileInputStream和BufferedInputStream有什么区别?

Java中的FileInputStream和BufferedInputStream有什么区别?

java

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

java ×3

interface ×2