排错 属性同名 编译器分辨不出该调用哪个
interface A {
//public static final int x = 0;
int x = 0;//属性
}
class B {
int x = 1;//属性
}
//继承了B 实现了A 因为接口跟类是并列关系 同时都有x,编译器不知道使用哪个x合适
class C extends B implements A {
public void pX() {
System.out.println(x);//这里会编译报错
System.out.println(super.x);//调用父类的x
System.out.println(A.x);//x是全局常量,用"类.属性"调用
}
public static void main(String[] args) {
new C().pX();//这里不会报错,但是它最后执行的也是上面的pX()方法
}
}
排错
//接口
interface Playable {
void play();
}
//接口
interface Bounceable {
void play();
}
//接口继承接口
interface Rollable extends Playable, Bounceable {//一个接口继承extends了另外两个接口
Ball ball = new Ball("我是全局常量的实例对象");
}
//实现类
class Ball implements Rollable {//实现
private String name;
public String getName() {
return name;
}
public Ball(String name) {
this.name = name;
}
public void play() {//第一个错误:两个接口的方法同名,不知道是重写哪个的
ball = new Ball("修改它,我就不信邪了");//第二个错误:Ball是在接口中声明的,是全局常量,不可以修改
System.out.println(ball.getName());
}
}