簡體   English   中英

Java接口概念

[英]Java interface concept

構建和接口時,有多少個類可以實現接口?
如果答案不止一個,那么當您調用接口(不直接調用實現)時,java如何知道要使用哪些實現?

有多少個類可以實現接口?

你需要多少就多少。

如果答案不止一個,那么當您調用接口(不直接調用實現)時,java如何知道要使用哪些實現?

這里有助於了解后期綁定(也稱為動態綁定)。

假設您有實現它的接口和類

interface Animal{
    void makeSound();
}

class Cat implements Animal{
    public void makeSound(){
        System.out.println("mew");
    }
}

class Dog implements Animal{
    public void makeSound(){
        System.out.println("woof");
    }
}

你也有類似的代碼

Animal a1 = new Cat();
Animal a2 = new Dog();

a1.makeSound();
a2.makeSound();

你會看到的結果是

mew
woof

這是因為在運行時(不是編譯時)正在查找(並調用)方法.makeSound()主體/代碼 這是可能的,因為每個對象都會記住它的類,所以a1引用持有的對象知道它是Cat實例,而a2持有的對象是Dog實例。

簡而言之,當您這樣做時:

a1.makeSound();
  • JVM 獲取a1持有的對象,
  • 然后詢問該對象關於它的類(在這種情況下它會知道它是Cat類的實例),
  • 然后它將訪問該類( Cat.class文件)並搜索makeSound()代碼(如果找不到這樣的方法,那么它將假定它必須被繼承,它將嘗試在超類中搜索它)
  • 當它找到這個方法時,它會從中調用代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM