黑马程序员技术交流社区

标题: 程序运行问题 [打印本页]

作者: 马雨铎    时间: 2011-7-29 11:14
标题: 程序运行问题
package a;
public interface aaa
{
        int i = 2;
}
import a.aaa;
public class test
{
        public static void main(String[] args)
        {
                aaa.i = aaa.i + 1;
                System.out.println(aaa.i);
        }
}
错误提示 aaa.i不能被赋值。  我觉得没错啊!  大侠们 来 给我讲下 详细点 。
作者: 兰海忠    时间: 2011-7-29 11:44
interface 接口中可以有变量(但不能加privave,protected修饰符),但在接口中的的变量本质上是静态(static)的而且是final 的,不管你有没有加 final static关键字。
作者: 匿名    时间: 2011-7-29 12:01
标题: 回复 楼主 的帖子
很简单   接口中的成员默认是常量的。
作者: 匿名    时间: 2011-7-29 12:03
接口中的成员默认是常量
作者: 匿名    时间: 2011-7-29 12:05
对于接口定义的常量属性而言,它们是接口相关的,而且他们只能是常量,所以系统会为这些属性增加static和final修饰符
作者: 匿名    时间: 2011-7-29 12:12
标题: 回复 楼主 的帖子
接口中的成员默认是常量,final的。
作者: 匿名    时间: 2011-7-29 12:15
接口中只有常量和方法的定义,没有变量和方法的实现。楼主,你用两个public运行没报错吗
作者: 匿名    时间: 2011-7-29 13:33
标题: 回复 7 # 的帖子
楼主的两个public当然没报错啊,他的就不是在一个Java文件中写的。
作者: 匿名    时间: 2011-7-29 14:31
在接口中的成员默认的都是static final 型的,而你代码中的(aaa.i = aaa.i + 1)把aaa.i当变量来用那当然出错了
[url]import a.aaa;
public class test
{
        public static void main(String[] args)
        {
                System.out.println(aaa.i + 1);
        }
} [/url]
这就可以运行出结果了
作者: 匿名    时间: 2011-7-29 14:33
不好意思,代码没有加好!O(∩_∩)O~




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