[英]Inheritance and Polymorphism in Java
假設我有兩個類,如下所示:
public class Button{
public void onClick(){ do something...}}
public class imageButton extends Button{
public void onClick(){...}
public void setImage(Image img){...}}
我知道我可以這樣聲明一個變量
Button btn1 = new imageButton();
要么
imageButton btn2 = new imageButton():
但是有什么區別呢? 第一個實例的數據類型到底是什么? 如果使用第一個實例,為什么btn1.setImage(Image img)會給我一個錯誤?
謝謝。
Button btn1 = new imageButton();
第一個實例的數據類型到底是什么?
這是一個imageButton
,但是使用引用btn1
時,您只能訪問Button
定義的方法。 如果要將其視為imageButton
,則必須imageButton
轉換它。
如果使用第一個實例,為什么btn1.setImage(Image img)會給我一個錯誤?
因為您聲明要將該對象視為Button
。
使用按鈕btn1 = new imageButton(); 您正在創建imageButton的實例,但是由於您的數據類型是Button,所以它將僅使用Button中包含的屬性,因此您不能使用btn1.setImage(),因為btn1是Button Type。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.