在JAVA中,一个类A中的常量,不能在另一个类B中的case后用A的对象调用吗?为什么?

classA{finalintMAX=10;}classB{ints=10;voidoprate(){Aa=newA();switch(s){casea.MAX:brea... class A{
final int MAX = 10;
}
class B{
int s = 10;
void oprate() {
A a = new A();
switch(s){
case a.MAX:
break;
}
}
}
//----------------------------
case a.MAX这条语句会出错,
展开
 我来答
匿名用户
2013-07-29
展开全部
如果没有对MAX成员指定访问权限,那么它默认是包内可以访问,B和A不在同一个包里面的话那么B是访问不到A中的MAX的。
改成public final int MAX = 10;就行了。
但是既然是常量,应该把它声明为static能够提高效率。
public static final int MAX = 10;
匿名用户
2013-07-29
展开全部
改成
class A{
static final int MAX = 10;
}

class B{
int s = 10;
void oprate() {
A a = new A();
switch(s){
case A.MAX:
break;
}
}
}
case 后面的参数只能是常量,而不能是变量,你MAX定义的是常量,但你调用的时候是用一个实例去
调用的(a.MAX)这时它无法判断是否是一个常量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-29
展开全部
一个类中的变量作用域就是一个类中,所以一个类A中的常量,不能在另一个类B中的case后用A的对象调用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-29
展开全部
MAX是非静态成员属性 不能被直接调用
除非将其定义为static的 至于是不是final无关紧要 当然这取决于你是否想让它可被修改

如果要实现你写的类中意思
只要在A类中加入
public int getMAX () {
return MAX ;
}

B中取数
A a = new A();
a.getMAX ()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式