java 对象切割

来源:互联网 发布:冰箱品牌 知乎 编辑:程序博客网 时间:2024/03/28 22:16

为什么被转换为父类类型的对象(会有对象切割,包括方法和属性),在重新转化为本类后,那些被切掉的东西又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)  ***278058706278058706*** method echo of class objectConvert:(After convert)  ***278058706Process finished with exit code 0

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