默认与静态方法

默认与静态方法

1、接口里的静态方法,不能被实现类重写,我理解,因为所有的静态成员都不能被重写。但是在测试类里,接口的引用指向实现类实例对象后,引用.静态方法名();这种调用形式为什么行不通。

2、接口里写有默认方法,实现类没去重写,在测试类里,当接口的引用指向实现类实例对象后,引用能调用实现类没去重写的默认方法吗?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
吃吃吃鱼的猫 2019-06-12 18:17:09

同学你好,

1、子类不能继承父类中的静态方法。

2、理解正确。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 静态方法和属性是能被继承,不能被重写吧
    2020-01-13 21:58:53
  • 同学你好,静态方法和属性是可以继承但不能重写的,但如果在接口中,则静态方法和属性无法被继承与重写。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2020-01-14 09:51:33
好帮手慕阿莹 2019-06-10 18:45:33

1、因为这个静态方法是接口中的,既不能被子类重写,也不能被子类继承,所以实现类中实际上是没这个方法的,所以调用不到。

2、默认方法是可以的:

public interface A {
	static void a() {
		System.out.println("这个是接口类中的静态方法");
	}

	default void b() {
		System.out.println("这个是接口类中的默认方法");
	}
}

package test03;
public class B implements A {
}
package test03;
public class C {
	public static void main(String[] args) {
		A b = new B();
		b.b();
	}
}


如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 鱼儿0001 #1
    谢谢老师的耐心回复。我有几点问题:1、父类的静态方法,子类可以继承吗?2、接口里的默认方法,即便子类没去重写,形如老师上述的代码例子,接口的引用照样可以调用。老师,接口的默认方法是不是被子类隐藏继承了?
    2019-06-12 17:23:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师