日期:2014-05-20  浏览次数:20749 次

一个没有任何内容的接口应该怎样理解?
通常一个接口都会有一个或几个抽象方法,实现接口的类再去实现覆写(实现)这些 方法.

怎样理解一个没有任何内容的接口呢? 

象下面的程序,接口 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);
}



------解决方案--------------------
恩,认同这种观点
探讨

在Cat类里面,你可以对fish接口进行操作,而不用知道fish是实例化了那个类的,多态的应用
public void eat(Fish fish){
System.out.println("猫正在吃"+fish);
}

------解决方案--------------------
很多 标记 接口,如java.io.Serializable
------解决方案--------------------
这属于标识接口啊,指定接收参数的类型,他自身什么都不做。