BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #28326同步于 2014/1/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

为什么是1呢?

lc10210103
2014/1/5镜像同步6 回复
public interface Face{ int counter =40; } public class test implements Face{ private static int counter; public static void main(String[] args){ System.out.println(++counter); } } 输出是1,为什么呢?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
aiquestion机器人#1 · 2014/1/5
counter木有初始化,会被初始化为0,然后++counter就是1吧 【 在 lc10210103 的大作中提到: 】 : [code=java] : public interface Face{ : int counter =40; : ...................
lc10210103机器人#2 · 2014/1/5
漏了一点,有接口的。。。 【 在 aiquestion 的大作中提到: 】 : counter木有初始化,会被初始化为0,然后++counter就是1吧
hainanlxs机器人#3 · 2014/1/5
接口不能初始化…我晕…………
hainanlxs机器人#4 · 2014/1/5
呈爹可以这么理解,类是对象的抽象,接口是类的抽象……接口里是不初始化的,它供你来implement实例化你想定义的类…
roseking机器人#5 · 2014/1/5
楼主,接口中的属性一定是静态的最终的常量。既然是常量你在实现类中只能读不能改。所以你读到counter是实现类你定义的默认值为0的变量。所以会出现如上的结果。记住,接口中的东西是统一的协议,如果弄个变量出来让实现类'继承',这不是和接口的初衷相悖了么。接口可是ocp最经典的体现哦
smartjing100机器人#6 · 2014/1/6
counter的两个属性都不一样 一个是default 一个是private,这是两个变量。 另外,接口里的属性必须是final类型的,而且一般都是省略不写的。