接口其实相当于更严格的一种公共类:
①接口中的数据对所有实现类只有一份,所以是static
②要使实现类为了向上转型成功(即:拿到的属性数据都是一样的),所以必须是final。
比如接口A,A有变量value。实现类A1,A2,可以向上转型。假如代码中有一句:
A a = null;
a = new A1()或A2();实现了A1或A2
System.out.println(a.value);
利用向上转型,可以得到接口a的值,在第2步中,我不关你是实现类A1,还是new A2(),通过转型,我们可以得到正确的值。要是类中可以更改,我们得不到一个统一的值,接口也没有了意义。