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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神讲解接口为什么不能和static共存

16 个回复

倒序浏览
接口内方法的修饰词,都是public static
成员变量修饰词默认都是public static final

点评

你记错了,方法是:public abstract 没有static修饰。  发表于 2015-4-16 09:43
回复 使用道具 举报
首先 接口中的所有方法都是abstract的,也就是抽象的,而抽象方法时没有static的,因为抽象方法没有方法体,而且有static的方法是不能覆盖的,需要子类 也用static修饰,所以这样定义接口才有意义。但是接口中的变量也都是Final、static的
回复 使用道具 举报
这个问题挺好
回复 使用道具 举报
首先static是静态的,被其修饰的都会在堆内存中开辟空间,相当于加载时就进行实例化了
而接口里面都是抽象的方法,都是不能被实例化的存在,这样一想应该就行了
回复 使用道具 举报
接口是设计用来给类实现的,如果定义为static,那么意味着不存在实例方法,也就没有实现的价值了
回复 使用道具 举报
CZTTZ 中级黑马 2015-4-16 12:13:00
7#
接口的出现是设计给类实现的,如果定义成静态,就不能被实例,也就没有实现的价值了
回复 使用道具 举报
也不是吧,接口里面的成员变量必须用public static final修饰。
回复 使用道具 举报
接口是用interface修饰。你是应该是说接口里的抽象方法为什么不可以用static修饰的问题。  不可以是因为static静态是要给类进行初始化,开辟内存空间,分配内存给对象。  既然接口是不可以实例化,要靠子类实现全部的抽象方法才可以才可以实例化。所以接口中的方法是public abstract修饰的。
回复 使用道具 举报
如果用static修饰的接口就不能用了
回复 使用道具 举报
因为抽象方法不能直接使用,必须实现。
然而static修饰的变量和方法能够直接使用,这是相冲突的。
到底听谁的呢?抽象的,还是静态的。
干脆来个互斥,我存在,你就滚蛋,我不存在,你才能存在
回复 使用道具 举报
yearn 中级黑马 2015-4-16 16:22:05
12#
static方法不能被覆盖!
回复 使用道具 举报
接口方法全部都是抽象的,如果是静态可以直接类名调用,这样不久出错了
回复 使用道具 举报
刚学过,但是不是很理解。
回复 使用道具 举报
为什么,可能会失去多态 的特性
回复 使用道具 举报
第一点:static修饰的成员是随着类的加载而加载,优先于对象而存在的。
第二点:接口是不能不能实例化对象的。
你觉得这两者能够共存吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马