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种快速修复:
我知道这个
((ChromeDriver) driver).clear();
解决了这个问题。但是,任何人都可以更逻辑地解释,为什么它不允许调用子类方法
答案 0 :(得分:0)
因为在编译时它将检查父类或接口中的方法,所以如果在父接口中找不到方法,它将给出编译错误