在我寻求正确地掌握Interface最佳实践,我注意到声明,如:
List myList = new ArrayList();
代替
ArrayList myList = new ArrayList();
– 对我的理解,原因是因为它允许灵活性,在某一天你不想实现一个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");
}
}
我的问题是,我不能访问batheSelf()方法,因为它只存在于Cat。这使我相信,我应该只声明一个接口,如果我只使用在接口中声明的方法(而不是额外的方法从子类),否则我应该直接从类声明(在这种情况下,Cat)。我在这个假设是正确的吗?