package Interface;
public class SubClassTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
SubClass sc=new SubClass();
//sc.aa(); //1.接口中的静态方法只能通过接口调用
//2.通过实现类的对象,可以调用接口中的默认方法
//3.如果子类(实现类)继承的父类中定义了与接口同名同参数的方法,且子类没有重写
//该方法,默认调用的是父类中的同名同参方法-->类优先原则
sc.bb();
//4.如果实现类重写了接口中的默认方法,调用时,仍然调用的是重写以后的方法
//5.如果实现类实现了多个接口,而这多个接口中定义了同名同参的默认方法,且实现类
//没有重写该方法的情况下,报错-->接口冲突。这就需要我们在实现类中重写此方法。
sc.cc();
}
}
interface compareA{
public static void aa(){
System.out.println("静态方法");
}
public default void bb() {
System.out.println("默认方法");
}
default void cc() {
System.out.println("默认方法");
}
}
class SuperClass{
public void cc() {
System.out.println("父类中的cc方法");
}
}
class SubClass extends SuperClass implements compareA{
public void cc() {
System.out.println("重写接口中的默认方法");
}
//如何在子类(实现类)中调用父类、接口中被重写的方法
public void Mymethod() {
cc(); //调用自己重写的方法
super.cc(); //调用父类中的方法
compareA.super.cc(); //调用接口中的默认方法
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交