繁体   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