java 对象切割

为什么被转换为父类类型的对象(会有对象切割,包括方法和属性),在重新转化为本类后,那些被切掉的东西又available了?

public class objectConvert {

    private String mSig;
    public void set(String ipStr)
    {
        mSig = ipStr;
    }

    public void echo(){
        System.out.println("*** method echo of class objectConvert:(" + mSig +")  ***");
    }

    public static void main(String args[])
    {
        System.out.println("*** start ***");
        objectConvert obj1 =new objectConvert();
        obj1.set("Hello World");
        obj1.echo();
        System.out.println(obj1.hashCode());
        Object obj2 = (Object)obj1;
        //      obj2.echo();
        System.out.println(obj2.hashCode());
        objectConvert obj3=(objectConvert)obj2;
        obj3.set("After convert");
        obj3.echo();
        System.out.println(obj3.hashCode());
    }
}

运行结果:

*** start ***
*** method echo of class objectConvert:(Hello World)  ***
278058706
278058706
*** method echo of class objectConvert:(After convert)  ***
278058706

Process finished with exit code 0

看来虽然被切割了,但对象obj1仍然在那里。由此可见,方法是否可以被调用,属性是否可以被访问,是语言语义上的规范。 唯此可以遥寄真解了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值