Java-Upcasting与多态性

Java-Upcasting与多态性,java,Java,我是Java的新手。我在探索Java概念时遇到了这些问题。 向上投射和多态性是否相同?我对这两个术语感到困惑 interface IWebdriver{ void closeBrowser() } Public class ChromeDriver implements IWebdriver{ public void closeBrowser(){ //Implementation } } Public class FirefoxDriver implements IWebdriver{

我是Java的新手。我在探索Java概念时遇到了这些问题。 向上投射和多态性是否相同?我对这两个术语感到困惑

interface IWebdriver{
void closeBrowser()
}

Public class ChromeDriver implements IWebdriver{

public void closeBrowser(){
//Implementation
}
}

Public class FirefoxDriver implements IWebdriver{

public void closeBrowser(){
//Implementation
}
}

Public class InternetExplorerDriver implements IWebdriver{

public void closeBrowser(){
//Implementation
}
}

Main(){
IWebdriver driver;

driver = new ChromeDriver(); // Polymorphism or Upcasting ??
driver = new FirefoxDriver(); // Polymorphism or Upcasting ??
driver = new InternetExplorerDriver(); Polymorphism or Upcasting ??

}

driver = new ChromeDriver();// Polymorphism or Upcasting ??
-多态性意味着多个表单,同一个对象执行不同的操作

-自动类型转换

有人能解释一下区别吗?

术语转换指的是一个表达式,其中某个类型的对象被分配给另一个类型的变量

以下是隐式铸造

IWebdriver driver;

driver = new ChromeDriver(); // implicit cast
driver = new FirefoxDriver(); // implicit cast
driver = new InternetExplorerDriver(); // implicit cast
IWebdriver driver;
... // some operations here
ChromeDriver chromeDriver = (ChromeDriver) driver; // explicit cast
而下面的一个是显式铸造

IWebdriver driver;

driver = new ChromeDriver(); // implicit cast
driver = new FirefoxDriver(); // implicit cast
driver = new InternetExplorerDriver(); // implicit cast
IWebdriver driver;
... // some operations here
ChromeDriver chromeDriver = (ChromeDriver) driver; // explicit cast
术语多态性是指变量中对象的行为

比如说,

IWebdriver driver;

if(case ==1) 
    driver = new ChromeDriver();
else 
    driver = new FireFoxDriver();

driver.closeBrowser(); // this call's behavior changes according to what object is assigned to the variable 'driver' and call that object's closeBrowser() behavior

不,多态性不是你说的意思。java没有任何形式的隐式转换。@M.Prokhorov-隐式转换或向上转换我的意思是java对基元类型有隐式转换,即int->long@esin88-Java具有类类型的隐式转换权限。链接provided@esin88-这实际上被JLS称为基本加宽转换。Casting是语法的名称。因此,隐式铸造是一种矛盾修饰法。。。根据JLS术语。当然,大多数程序员无论如何都会使用它。。。。