为了账号安全,请及时绑定邮箱和手机立即绑定

用Java编译对象

用Java编译对象

慕哥9229398 2019-08-12 18:29:43
用Java编译对象我对在Java中强制转换对象意味着什么感到困惑。说你有......Superclass variable = new Subclass object();(Superclass variable).method();这里发生了什么?变量类型是否更改,或者变量中的对象是否更改?非常困惑。
查看完整描述

3 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您引用的示例在java中称为Upcasting。

它创建了一个子类对象,其中一个超类变量指向它。

变量不会改变,它仍然是超类的变量,但它指向子类的对象。

例如,假设您有两个类机器和相机; Camera是Machine的子类

class Machine{

    public void start(){

        System.out.println("Machine Started");
    }}class Camera extends Machine{
     public void start(){

            System.out.println("Camera Started");
        }
     public void snap(){
         System.out.println("Photo taken");
     }
 }Machine machine1 = new Camera();machine1.start();

如果你执行上面的语句,它将创建一个Camera类的实例,其引用指向它的Machine类。因此,现在输出将是“ Camera Started ”该变量仍然是Machine类的引用。如果您尝试machine1.snap();代码将无法编译

这里的内容是所有相机都是机器,因为相机是机器的子类,但所有机器都不是相机。因此,您可以创建子类的对象并将其指向超类引用,但您不能要求超类引用执行子类对象的所有功能(在我们的示例中machine1.snap()不会编译)。超类引用只能访问超类已知的函数(在我们的示例中machine1.start())。你不能要求机器参考快速。:)


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信