簡體   English   中英

Java中的繼承和多態

[英]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.

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