Java8的接口里面允许定义静态方法,与默认方法,那么当一个子接口继承父接口时,那么接口中的默认方法与静态方法的继承与覆盖是怎么样的呢?
我们知道两个类有继承关系时,子类会继承父类的实例方法,静态方法,实例变量与静态变量,而且子类的实例方法、实例成员变量与父类的实例方法相同时(返回类型相同,参数列表相同,方法名也形同),实例成员变量相同时,子类会将父类的实例方法进行覆盖,对父类实例成员变量隐藏,但子类继承父类的静态方法或静态成员变量时,不会将父类的静态方法进行覆盖,只会对父类静态方法或静态成员变量进行隐藏!
public class Fu {
static int a = 5; //父类静态成员变量
int b = 4; //父类实例成员变量
static void show(){
System.out.println("父类静态方法");
}
void show1(){
System.out.println("父类实例方法");
}
}
class Zi extends Fu{
}
class DemoTest{
public static void main(String [] args){
Zi z = new Zi();
System.out.println(z.a);
System.out.println(z.b);
z.