当初看这块时只是理所当然的认为,没有深究原因,今天查了下,发现网上很多解释真是差强人意,仔细思考了下,结合网上的回答,谈谈我自己的见解。
首先:public:这个很容易理解,接口需要被其他类实现,应该是公用的
static:java中规定的一个类可以实现多个接口,但是只能继承一个类,对比抽象类中,变量没要求必须是static就是因为这一点,都知道static是属于类的,可以类名.变量名 调用,由此,假设有两个接口A,B,他们又一个相同名字的变量n,如果一个类C同时实现了A,B接口,那么可能会导致使用n时无法确定到底是A中的还是B中的,这时候就可以使用A.n或者B.n区别使用了。
final:因为接口中的方法都是抽象的,没有具体的方法体,对于一个没有final修饰的变量,没什么意义,所以使用final修饰为常量
再谈抽象类和接口的区别:
抽象类是对一个事物的向上抽象,java中规定只能单继承,毕竟一个物体只能属于一种事物,是一个a is b的关系。接口是对行为的抽象,一个物体可能具有多种行为,导致可以多实现,为了弥补多实现带来的问题才会考虑到使用public static final。
|
|