在正确掌握接口最佳实践的过程中,我注意到一些声明,例如:
List<String> myList = new ArrayList<String>();
代替
ArrayList<String> myList = new ArrayList<String>();
-据我所知,原因是因为它有一定的灵活性,以防万一您不想实现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)。我对这个假设是否正确?
HUX布斯
慕村9548890
相关分类