Java的多态特性在接口中的应用示例

interface Inter {
    //格式不全的会用默认的格式
    public int num = 100;
    public final int num2 = 99;
    //虽然会默认给出,但建议手动给出
    public static final int num3 = 78;

    //会报错,接口没有构造方法
    //public Inter() {}

    //接口方法中不能带有主体
    //public void show() {}

    //这句虽然没有abstract,但是不会报错,因为默认 public abstract
    //public void show();

    public abstract void show();

}

//接口的实现类明明格式:接口名+Impl
//约定俗成的,并不是说必须要这样写,但这样写容易看懂
class InterImpl implements Inter {
    public InterImpl() {
        super();
    }

    //因为接口默认public ,而如果没有给出权限默认最低权限,所以报错。
    //void show() {}

    //正确
    public void show() {
        System.out.println("This is InterImpl implements Inter show()");
    }
}

//实现Inter接口的第二个类,用来测试接口的是否适用java的多态特性
class InterImplB implements Inter{
    public void show(){
        System.out.println("This is InterImplB implements Inter show()");

    }

}

public class TestInterfacePolymorphism {
    public static void main(String[] args) {
        Inter a = new InterImpl();
        System.out.println(a.num);
        System.out.println(a.num2);
        System.out.println("-------------------");
        //下面这两个都会报错,因为接口中的成员变量都为最终变量,不能被赋值
        //a.num = 88;
        //a.num2 = 777;

        //接口中的成员变量可以通过接口名调用,说明是静态的
        System.out.println(Inter.num);
        System.out.println(Inter.num2);
        System.out.println("-------------------");
        //a = new InterImpl();
        a.show();
        a = new InterImplB();
        a.show();
    }

}

运行结果:

100
99
——————-
100
99
——————-
This is InterImpl implements Inter show()
This is InterImplB implements Inter show()