制作网站用什么代码,网页怎么制作的,南充网站建设公司,怎么宣传自己新开的店铺参考两篇博客#xff1a;http://blog.csdn.net/moreevan/article/details/6697777http://blog.csdn.net/moreevan/article/details/6698529针对第二篇博客#xff0c;看了下面的评论#xff0c;发现子类输出的书号其实是父类的#xff0c;书名是自己先添加的成员变量#…参考两篇博客http://blog.csdn.net/moreevan/article/details/6697777http://blog.csdn.net/moreevan/article/details/6698529针对第二篇博客看了下面的评论发现子类输出的书号其实是父类的书名是自己先添加的成员变量我自己在实验的时候发现子类NewBook中使用父类Book的变量部分输出的都没有值基本类型的系统默认值是0非基础类型例如字符串系统默认是null然后当把父类Book实现了序列化接口时这是才能全部输出子类的变量值并且第二篇博客里也写到了如果在打印对象的时候会调用对象的toString方法即使我在子类中覆盖了toString()方法并且没有调用父类的toString方法但是系统依然报出了第二篇博客中提到的那个错误java.io.InvalidClassException: NewBook; no valid constructor所以父类中加了个空的无参构造函数这样就可以正常打印出来了下面是全码1、父类没有实现序列化接口(此时不可以打印子类的变量值)importjava.io.Serializable;public classBook {intbook_num;String book_authour;//构造函数public Book(intabook_num, String abook_author){this.book_num abook_num;this.book_authour abook_author;}publicBook(){}//设置作者名public voidsetBookAuthor(String abook_author){this.book_authour abook_author;}//设置书号public void setBookNum(intabook_num){this.book_num abook_num;}//打印对象publicString toString(){return book_num:book_num\nbook_anthor:book_authour;}}2、父类实现序列化接口(此时可以打印子类的变量值)importjava.io.Serializable;public class Book implementsSerializable {intbook_num;String book_authour;/*** 实现序列化接口的时候一定要分配序列ID*/private static final long serialVersionUID 1L;//构造函数public Book(intabook_num, String abook_author){this.book_num abook_num;this.book_authour abook_author;}publicBook(){}//设置作者名public voidsetBookAuthor(String abook_author){this.book_authour abook_author;}//设置书号public void setBookNum(intabook_num){this.book_num abook_num;}//打印对象publicString toString(){return book_num:book_num\nbook_anthor:book_authour;}}3、子类importjava.io.Serializable;public class NewBook extends Book implementsSerializable{privateString book_version;/*** 实现序列化接口的时候一定要分配序列ID*/private static final long serialVersionUID 1L;public NewBook(intabook_num, String abook_author,String abook_version){super(abook_num, abook_author);this.book_version abook_version;//TODO Auto-generated constructor stub}Overridepublic voidsetBookAuthor(String abook_author){//TODO Auto-generated method stubsuper.setBookAuthor(abook_author);}Overridepublic void setBookNum(intabook_num){//TODO Auto-generated method stubsuper.setBookNum(abook_num);}public voidsetBookVersion(String abook_version){book_versionabook_version;}OverridepublicString toString(){//TODO Auto-generated method stubreturn new_book_num:book_numnew_book_anthor:book_authournew_book_versionbook_version;}}4、主函数importjava.io.EOFException;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutput;importjava.io.ObjectOutputStream;public classBookSerializable {public static voidmain(String args[]){/** Java里的main方法里不能直接调用非静态的对象要么调用静态变量要么调用在方法内部实例化的非静态局部变量*/NewBook new_book1new NewBook(1,呼啸山庄,1.0);NewBook new_book2new NewBook(2,红与黑,2.0);/** 将对象序列化到文件中*/try{File fil new File(C://JavaFile//red_bean.txt);if(!fil.exists()){fil.createNewFile();}FileOutputStream fil_input newFileOutputStream(fil);ObjectOutputStream obj_output newObjectOutputStream(fil_input);obj_output.writeObject(new_book1);obj_output.reset();new_book1.setBookVersion(3.0);obj_output.writeObject(new_book1);obj_output.reset();new_book1.setBookVersion(4.0);obj_output.writeObject(new_book1);obj_output.writeObject(new_book2);obj_output.writeObject(null);//写入结束标志方便读取(非常重要如果不写入在读取的时候无法定位读取结束)obj_output.close();//关闭对象输出流fil_input.close();//关闭文件输出流} catch(FileNotFoundException e) {//TODO Auto-generated catch blocke.printStackTrace();}catch(IOException e) {//TODO Auto-generated catch blocke.printStackTrace();}/** 将对象从文件中读出来*/ObjectInputStream obj_input;try{FileInputStream fil_input new FileInputStream(C://JavaFile//red_bean.txt);obj_input newObjectInputStream(fil_input);Object boj;while((boj obj_input.readObject())!null)//循环读取对象流{NewBook new_bookReadTemp(NewBook)boj;System.out.println(new_bookReadTemp);/** 读出的时候按照写入的顺序读取*//*NewBook new_bookRead1 (NewBook)obj_input.readObject();NewBook new_bookRead2 (NewBook)obj_input.readObject();NewBook new_bookRead3 (NewBook)obj_input.readObject();NewBook new_bookRead4 (NewBook)obj_input.readObject();//NewBook new_bookRead5 (NewBook)obj_input.readObject();System.out.println(new_bookRead1);System.out.println(new_bookRead2);System.out.println(new_bookRead3);System.out.println(new_bookRead4);//System.out.println(new_bookRead5);*/}obj_input.close();fil_input.close();}catch(EOFException e){e.printStackTrace();}catch(FileNotFoundException e) {//TODO Auto-generated catch blocke.printStackTrace();}catch(ClassNotFoundException e) {//TODO Auto-generated catch blocke.printStackTrace();}catch(IOException e) {//TODO Auto-generated catch blocke.printStackTrace();}}}自己动手敲了一遍代码的感受确实应该多多动手呀编惯了Android感觉养成了很不好的语法习惯main()是个静态方法我还在main方法外面定义了了非静态对象在main方法里用显然不行啊调用非静态方法然后在非静态方法里使用非静态变量或者直接在main方法里定义非静态局部变量并使用Java里没有全局变量的概念要共享数据就专门定义一个share类 里面全是静态的变量方法。不要把安卓的onCreat和main混在一起。main里的变量定义和使用http://blog.csdn.net/zi_jun/article/details/7553132其他的Java序列化较好博客http://blog.csdn.net/wangzhiqing3/article/details/8392803Java文件操作http://www.cnblogs.com/springcsc/archive/2009/12/03/1616367.htmlhttp://blog.csdn.net/smartcat86/article/details/4085739/