返回信息流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,为什么呢?
这是一条镜像帖。来源:北邮人论坛 / java / #28326同步于 2014/1/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
为什么是1呢?
lc10210103
2014/1/5镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
counter木有初始化,会被初始化为0,然后++counter就是1吧
【 在 lc10210103 的大作中提到: 】
: [code=java]
: public interface Face{
: int counter =40;
: ...................
漏了一点,有接口的。。。
【 在 aiquestion 的大作中提到: 】
: counter木有初始化,会被初始化为0,然后++counter就是1吧
楼主,接口中的属性一定是静态的最终的常量。既然是常量你在实现类中只能读不能改。所以你读到counter是实现类你定义的默认值为0的变量。所以会出现如上的结果。记住,接口中的东西是统一的协议,如果弄个变量出来让实现类'继承',这不是和接口的初衷相悖了么。接口可是ocp最经典的体现哦
counter的两个属性都不一样 一个是default 一个是private,这是两个变量。 另外,接口里的属性必须是final类型的,而且一般都是省略不写的。