在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这条语句会出错, 展开
final int MAX = 10;
}
class B{
int s = 10;
void oprate() {
A a = new A();
switch(s){
case a.MAX:
break;
}
}
}
//----------------------------
case a.MAX这条语句会出错, 展开
4个回答
2013-07-29
展开全部
如果没有对MAX成员指定访问权限,那么它默认是包内可以访问,B和A不在同一个包里面的话那么B是访问不到A中的MAX的。
改成public final int MAX = 10;就行了。
但是既然是常量,应该把它声明为static能够提高效率。
public static final int MAX = 10;
改成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)这时它无法判断是否是一个常量
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 ()
除非将其定义为static的 至于是不是final无关紧要 当然这取决于你是否想让它可被修改
如果要实现你写的类中意思
只要在A类中加入
public int getMAX () {
return MAX ;
}
B中取数
A a = new A();
a.getMAX ()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |