java一個類實現多個接口,這些接口具有相同的default方法的場景

場景描述:

一個類實現兩個接口,這兩個接口裏面都有一個相同方法名的方法,那麼該類在引用這個方法的時候,具體是是引用的那個呢?

 

目錄

場景描述:

1、如果該類自己也有一個同名的方法

2.如果該類沒有實現這個方法

 2.1 如果這些接口之間沒有繼承關係

   2.2 如果這些接口有繼承關係


1、如果該類自己也有一個同名的方法

    那麼毫無疑問,這個調用方法,是它自己的。

public interface Animal  {

    public void run();

    default void print(){
        System.out.println("Animal print");
    }

}

public interface Animal2 {

    public void run();

    default void print(){
        System.out.println("Animal2 print");
    }


}

public class Person implements  Animal ,Animal2 {


    @Override
    public void run() {
        System.out.println("this is person run");
    }

    @Override
    public void print() {
        System.out.println("this is person print");
    }


    public static void main(String[] args) {
        Person  person= new Person();
        person.run();
        person.print();

    }

}
this is person run
this is person print

Process finished with exit code 0

 

2.如果該類沒有實現這個方法

 那麼就要有區分了:

 2.1 如果這些接口之間沒有繼承關係

    系統會提示報錯,提示需要強制實現此方法.

       

 

   2.2 如果這些接口有繼承關係

    那麼就會,調用子接口的方法,如下案例:

public interface Animal  {

    public void run();

    default void print(){
        System.out.println("Animal print");
    }

}


public interface Animal2  extends Animal{

    public void run();

    default void print(){
        System.out.println("Animal2 print");
    }


}

public class Person implements  Animal ,Animal2 {


    @Override
    public void run() {
        System.out.println("this is person run");
    }



    public static void main(String[] args) {
        Person  person= new Person();
        person.run();
        person.print();

    }

}

結果:

this is person run
Animal2 print

Process finished with exit code 0

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章