父类和接口有同名的属性
如果父类和接口中有同名的属性,子类继承父类又实现接口,那么调用这个属性的时候,就会报错
class Person {
int x = 10;
}
interface Behavior {
int x = 20;
}
class Student extends Person implements Behavior {
public static void main(String[] args) {
System.out.println(x); // error: 对x的引用不明确 ,Person中的变量x和Behavior中的变量x都匹配
}
}
父类和接口有同名的方法
如果子类(实现类)继承的父类和实现的接口中存在同名同参的方法,那么子类如果重写了该方法,肯定调用的是重写过的方法,如果没有重写,那么默认调用父类的这个方法
class Person {
public void fun() {
System.out.println("这里是父类的方法");
}
}
interface Behavior {
// jdk8开始,允许接口中定义静态方法和默认方法
public default void fun() {
System.out.println("这里是接口的方法");
}
}
class Student extends Person implements Behavior {
public static void main(String[] args) {
Student s = new Student();
s.fun(); // 这里是父类的方法
}
}