通常一个接口都会有一个或几个抽象方法,实现接口的类再去实现覆写(实现)这些 方法.
怎样理解一个没有任何内容的接口呢?
象下面的程序,接口 Fish 无任何属性和方法.
- Java code
/* filename: InnerClassUpperCase2.java */package cs.ch7;class Cat{ public void eat(Fish fish) { System.out.println("猫正在吃"+fish); }}interface Fish{}class PetStore { private class Sardine implements Fish { private String name; public Sardine() { name="沙丁鱼"; } public String toString() { return name; } } private class Herring implements Fish { private String name; public Herring() { name="青鱼"; } public String toString() { return name; } } private class Tuna implements Fish { private String name; public Tuna() { name="金枪鱼"; } public String toString() { return name; } } public Fish provideSardine() { return new Sardine(); } public Fish provideHerring() { return new Herring(); } public Fish provideTuna() { return new Tuna(); }} //====================================== class InnerClassUpperCase2 测试类,含main()//====public class InnerClassUpperCase2{ public static void main(String[] args) { Cat cat=new Cat(); //生成Cat类的对象。 PetStore petStore=new PetStore(); //生成Petstore对象。 cat.eat(petStore.provideSardine()); cat.eat(petStore.provideHerring()); cat.eat(petStore.provideTuna()); }}//====================================== end class InnerClassUpperCase2
------解决方案--------------------
在Cat类里面,你可以对fish接口进行操作,而不用知道fish是实例化了那个类的,多态的应用
public void eat(Fish fish){
System.out.println("猫正在吃"+fish);
}
------解决方案--------------------
恩,认同这种观点
------解决方案--------------------
很多 标记 接口,如java.io.Serializable
------解决方案--------------------
这属于标识接口啊,指定接收参数的类型,他自身什么都不做。