Java-Upcasting与多态性
我是Java的新手。我在探索Java概念时遇到了这些问题。 向上投射和多态性是否相同?我对这两个术语感到困惑Java-Upcasting与多态性,java,Java,我是Java的新手。我在探索Java概念时遇到了这些问题。 向上投射和多态性是否相同?我对这两个术语感到困惑 interface IWebdriver{ void closeBrowser() } Public class ChromeDriver implements IWebdriver{ public void closeBrowser(){ //Implementation } } Public class FirefoxDriver implements IWebdriver{
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术语。当然,大多数程序员无论如何都会使用它。。。。