簡體   English   中英

為什么不能從父類中實現的接口對象調用子類方法

[英]Why Cannot call child class method from object of interface implemented in parent class

public interface WebDriver {
    default void get() {
        System.out.println("Opening Url");}

    void click();
    void sendKeys();
}

public class RemoteWebDriver implements WebDriver {
    @Override
    public void click() {
        System.out.println("Clicking WebElement");
    }

    @Override
    public void sendKeys() {
        System.out.println("Entering Text");
    }
}

public class ChromeDriver extends RemoteWebDriver {
    public void clear() {
        System.out.println("Clearing Text");
    }
}

public class TestClass {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get();
        driver.click();
        driver.sendKeys();
        driver.clear();
    }
}

driver.clear(); 在TestClass給出錯誤。 “對於類型WebDriver,方法clear()未定義”

2個快速修復可用:

  • 在WebDriver類型中創建方法clear()
  • 將演員表添加到webdriver

我知道這個

((ChromeDriver) driver).clear(); 

解決問題。 但是誰能更邏輯地解釋為什么不允許調用子類方法

因為在編譯時它將檢查父類或接口中的方法,所以如果在父接口中找不到方法,它將給出編譯錯誤

暫無
暫無

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

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