分享接口面试题

这篇博客探讨了Java编程中类和接口同名属性导致的编译问题,以及接口间方法重名的困惑。通过示例代码展示了如何通过指定super关键字调用父类属性,以及使用类名.属性来访问静态成员。同时,文章也提到了接口继承多个接口时方法同名的挑战,并分析了解决方案。
摘要由CSDN通过智能技术生成

排错 属性同名 编译器分辨不出该调用哪个

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());

	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值