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