java中错误提示:Multiple markers at this line 为什么?

错误提示:Multiplemarkersatthisline-ThefinalfieldA.scannotbeassigned-ThestaticfieldA.sshou... 错误提示:Multiple markers at this line
- The final field A.s cannot be assigned
- The static field A.s should be accessed in a
static way

interface A{
// public static final String s = "武汉理工大学" ;
String s = "武汉理工大学"; // 全局常量
// public abstract void M1() ;
void M1() ; // 抽象方法
public void M2() ; // 抽象方法
}
class B implements A{ // 子类B实现了接口A
public void M1(){ // 实现抽象方法
System.out.println("HELLO WORLD!!!") ;
}
public void M2(){
System.out.println(s); // 输出全局常量
}
};
public class Interfacesample2{
public static void main(String args[]){
B b = new B() ;
b.s="清华大学"; //这句话出错!
b.M1() ;
b.M2() ;
}
};
展开
 我来答
匿名用户
推荐于2017-09-24
展开全部
在接口中定义的这样的都是常量(static final修饰的变量都是常量),只要初始化了都不可以再改变,即不可以再重新赋值,即使在你的实现类里面,也不可以去改变他的值
你这里初始化值为空字符串,所以不能在重新赋值了,可以修改成下面的

package util;

interface A{
// public static final String s = "武汉理工大学" ;
StringBuffer s =new StringBuffer("武汉理工大学"); // 全局常量
// public abstract void M1() ;
void M1() ; // 抽象方法
public void M2() ; // 抽象方法
}
class B implements A{ // 子类B实现了接口A
public void M1(){ // 实现抽象方法
System.out.println("HELLO WORLD!!!") ;
}
public void M2(){
System.out.println(s); // 输出全局常量
}
};
public class Interfacesample2{
public static void main(String args[]){
B b = new B() ;
//A.s="清华大学"; //这句话出错!
A.s.append("222");

b.M1() ;
b.M2() ;
}
};
dark19861201
2014-12-23 · TA获得超过2153个赞
知道大有可为答主
回答量:2584
采纳率:79%
帮助的人:1791万
展开全部
因为你的A定义为一个interface,interface是不能声明成员变量的呀
追问
就是说b.s是一个成员变量,而接口只能是全局常量,所以这句话只能删掉?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式