黑马程序员技术交流社区

标题: 接口为什么不能和static共存 [打印本页]

作者: ︶︿︶︶︿︶    时间: 2015-4-16 06:33
标题: 接口为什么不能和static共存
求大神讲解接口为什么不能和static共存
作者: 优质码农    时间: 2015-4-16 06:48
接口内方法的修饰词,都是public static
成员变量修饰词默认都是public static final
作者: Wilsoncyf    时间: 2015-4-16 09:21
首先 接口中的所有方法都是abstract的,也就是抽象的,而抽象方法时没有static的,因为抽象方法没有方法体,而且有static的方法是不能覆盖的,需要子类 也用static修饰,所以这样定义接口才有意义。但是接口中的变量也都是Final、static的
作者: 13699266500    时间: 2015-4-16 09:28
这个问题挺好
作者: WYKings    时间: 2015-4-16 11:15
首先static是静态的,被其修饰的都会在堆内存中开辟空间,相当于加载时就进行实例化了
而接口里面都是抽象的方法,都是不能被实例化的存在,这样一想应该就行了
作者: sisel    时间: 2015-4-16 12:04
接口是设计用来给类实现的,如果定义为static,那么意味着不存在实例方法,也就没有实现的价值了
作者: CZTTZ    时间: 2015-4-16 12:13
接口的出现是设计给类实现的,如果定义成静态,就不能被实例,也就没有实现的价值了
作者: hui1130    时间: 2015-4-16 12:47
也不是吧,接口里面的成员变量必须用public static final修饰。
作者: jiangwenjun    时间: 2015-4-16 13:01
接口是用interface修饰。你是应该是说接口里的抽象方法为什么不可以用static修饰的问题。  不可以是因为static静态是要给类进行初始化,开辟内存空间,分配内存给对象。  既然接口是不可以实例化,要靠子类实现全部的抽象方法才可以才可以实例化。所以接口中的方法是public abstract修饰的。
作者: 晓月清晖明    时间: 2015-4-16 13:03
如果用static修饰的接口就不能用了
作者: 曾宇    时间: 2015-4-16 14:28
因为抽象方法不能直接使用,必须实现。
然而static修饰的变量和方法能够直接使用,这是相冲突的。
到底听谁的呢?抽象的,还是静态的。
干脆来个互斥,我存在,你就滚蛋,我不存在,你才能存在
作者: yearn    时间: 2015-4-16 16:22
static方法不能被覆盖!
作者: 王善辉    时间: 2015-4-16 17:50
接口方法全部都是抽象的,如果是静态可以直接类名调用,这样不久出错了
作者: yxnheima    时间: 2015-4-16 18:50
刚学过,但是不是很理解。
作者: 缤纷落叶    时间: 2015-4-16 19:38
为什么,可能会失去多态 的特性
作者: 忆墨    时间: 2015-4-16 21:30
第一点:static修饰的成员是随着类的加载而加载,优先于对象而存在的。
第二点:接口是不能不能实例化对象的。
你觉得这两者能够共存吗?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2