首页 青云排行榜 知识中心 控制台

给定程序的输出是什么?(     )

import java.io.*;
public class Test86 { 
    public static void main(String[] args) throws ClassNotFoundException, IOException {
        ByteArrayOutputStream bOut = new ByteArrayOutputStream(); 
        ObjectOutputStream objStrm = new ObjectOutputStream(bOut); 
        Beta b = new Beta() {
            { a=2; b=3; }
        }; 
        objStrm.writeObject(b); 
        ObjectInputStream objInStrm = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray()));
        System.out.println(objInStrm.readObject().toString()); 
    } 
} 
class Alpha { 
    public int a; 
    public transient int b; 
} 
class Beta extends Alpha implements Serializable { 
    public String toString() { 
        return String.valueOf(a) + String.valueOf(b); 
    } 
}

11

11

00

22

1、Serializable不具备可传递性,因为Alpha没有实现序列化接口,所以a和b都不会被序列化。
2、transient修饰的变量会被Serializable接口忽略,但没有实现Serializable是没有意义的。
3、new Beta()对象后加大括号{}实际上已经创建了它的一个匿名子类,里面的代码可以继承父类的特征,但这个类已经不是Beta,“{ a=2; b=3; }”这个是实例代码块,子类构造函数之前运行。
关于我们
公司简介
联系我们
联系我们
售前咨询: leizhongnan@eval100.com
售后服务: 0755-26415932
商务合作: support@eval100.com
友情链接
金蝶软件
快递100
关注我们
Copyright © 2023-2023 深圳慧题科技有限公司 粤ICP备2023109746号-1 粤公网安备44030002001082