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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马雨铎   /  2011-7-29 11:14  /  2608 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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不能被赋值。  我觉得没错啊!  大侠们 来 给我讲下 详细点 。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 类名、变量名命名要规范。

查看全部评分

9 个回复

倒序浏览
interface 接口中可以有变量(但不能加privave,protected修饰符),但在接口中的的变量本质上是静态(static)的而且是final 的,不管你有没有加 final static关键字。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-29 12:01:20
藤椅

回复 楼主 的帖子

很简单   接口中的成员默认是常量的。
回复 使用道具 举报
黑马网友  发表于 2011-7-29 12:03:11
板凳
接口中的成员默认是常量
回复 使用道具 举报
黑马网友  发表于 2011-7-29 12:05:39
报纸
对于接口定义的常量属性而言,它们是接口相关的,而且他们只能是常量,所以系统会为这些属性增加static和final修饰符
回复 使用道具 举报
黑马网友  发表于 2011-7-29 12:12:13
地板

回复 楼主 的帖子

接口中的成员默认是常量,final的。
回复 使用道具 举报
黑马网友  发表于 2011-7-29 12:15:36
7#
接口中只有常量和方法的定义,没有变量和方法的实现。楼主,你用两个public运行没报错吗
回复 使用道具 举报
黑马网友  发表于 2011-7-29 13:33:59
8#

回复 7 # 的帖子

楼主的两个public当然没报错啊,他的就不是在一个Java文件中写的。
回复 使用道具 举报
黑马网友  发表于 2011-7-29 14:31:59
9#
在接口中的成员默认的都是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:16
10#
不好意思,代码没有加好!O(∩_∩)O~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马