黑马程序员技术交流社区

标题: c.COLOR="blue";这句报错了,为什么? [打印本页]

作者: 梁秋瑜    时间: 2013-5-26 22:01
标题: c.COLOR="blue";这句报错了,为什么?
本帖最后由 梁秋瑜 于 2013-5-28 20:20 编辑

class InterfaceDemo4 {
public static void main(String[] args) {
  China c = new China();
  c.speak();
  c.copy();
  System.out.println(山寨.COLOR);
  System.out.println(China.COLOR);
  System.out.println(c.COLOR);
c.COLOR="blue";
}
interface 山寨 {
String COLOR = "red";
void copy();
}
class China implements 山寨{
void speak(){
  System.out.println("说中文");
}
public void copy(){
  System.out.println("一直在模仿从未被起诉");
}

}

作者: lpflpy    时间: 2013-5-26 23:00
因为接口里面的常量默认修饰符是public static final  所以当然不能被改了
作者: 小羽天空    时间: 2013-5-26 23:16
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
作者: 卜卜侠    时间: 2013-5-26 23:55
对于接口,特别要注意其成员常量和成员方法都是固定修饰符,
而且这固定修饰符一般都是省略不写出来的,有一定的迷惑性。
成员常量的固定修饰符是 public static final
成员方法               public abstract
题中的interface 山寨 中的(public static final)String COLOR = "red" 已经是全局常量了,所以不能做出任何的复写改动了
作者: 刘国强    时间: 2013-5-27 02:18
接口中的color默认呗final进行修改,所以不可以对他再进行重新赋值




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