A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

当初看这块时只是理所当然的认为,没有深究原因,今天查了下,发现网上很多解释真是差强人意,仔细思考了下,结合网上的回答,谈谈我自己的见解。
首先: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。

1 个回复

倒序浏览
还有一点,突然想起来了,定义为final一个原因是由于是static导致的,static是共有的,然和对象都可以修改,由此会引发一个对象修改了,另一个对象也改变了,所以需要final定义为常量
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马