一、公有静态常量的冲突
子类无法继承有冲突的变量
class Fu{
public static final int NUM1 = 10;
public static final int NUM2 = 20;
}
interface A{
public static final int NUM1 = 100;
}
class Zi extends Fu implements A{
}
public class Test {
public static void main(String[] args){
//System.out.println(Zi.NUM1);//编译报错
System.out.println(Zi.NUM2);
}
}
二、公有抽象方法的冲突
子类必须重写一次有冲突的抽象方法
abstract class Fu{
public abstract void method();
}
interface A{
public abstract void method();
}
class Zi extends Fu implements A{
@Override
public void method () {
System.out.println("Zi 重写有冲突的抽象方法");
}
}
public class Test {
public static void main(String[] args){
Zi zi = new Zi();
zi.method();
}
}
三、公有默认方法的冲突
公有默认方法,会优先访问父类的
class Fu{
public void method(){
System.out.println("Fu 类中的默认方法method");
}
}
interface A{
public default void method(){
System.out.println("A接口中的默认方法method");
}
}
class Zi extends Fu implements A{
}
public class Test {
public static void main (String[] args) {
Zi zi = new Zi();
zi.method();//Fu类中的默认方法
}
}
四、公有静态方法的冲突
公有静态方法冲突的话,只会访问父类的静态方法
class Fu{
public static void method(){
System.out.println("Fu 类中的静态方法method");
}
}
interface A{
public static void method(){
System.out.println("A 接口中的静态方法method");
}
}
class Zi extends Fu implements A{
}
public class Test {
public static void main (String[] args) {
Zi.method(); //Fu 类中的静态方法method
}
}