前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用java对与具有共享对象的数据进行序列化

使用java对与具有共享对象的数据进行序列化

作者头像
用户2436820
发布于 2018-09-05 02:32:25
发布于 2018-09-05 02:32:25
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

objectStream.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package randomAccess;

import Employee.Employee;
import Employee.Manager;

import java.io.*;


public class objectStream {
    public static void main(String[] args) throws ClassNotFoundException{
        Employee harry = new Employee("harry",50000d,1989,10,1);
        Manager carl = new Manager("carl",8000d,1983,12,22);
        carl.setSecretary(harry);
        Manager tony = new Manager("tony",4000d,1990,3,15);
        tony.setSecretary(harry);
        Employee[] staff = new Employee[3];
        staff[0] = carl;
        staff[1] = harry;
        staff[2] = tony;
        try(ObjectOutputStream out = new ObjectOutputStream((new FileOutputStream("employee.dat")))){
            out.writeObject(staff);
        }catch (IOException e){
            System.out.println(e);
        }
        try(ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.dat"))){

            Employee[] newStaff = (Employee[])in.readObject();

            //raise secretary's salary

            newStaff[1].raiseSalaryt(10);
            for (Employee e:newStaff
                 ) {
                System.out.println(e);
            }
        }catch (IOException e){

        }
    }
}
##  Employee

package Employee;

import java.io.Serializable; import java.time.LocalDate;

public class Employee implements Serializable{ private String name; private double salary; private LocalDate hireDay; public Employee(String name,Double salary,int year,int month, int day ){ this.name = name; this.salary = salary; this.hireDay = LocalDate.of(year,month,day); }

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public String getName() {
    return name;
}

public double getSalary() {
    return salary;
}

public LocalDate getHireDay() {
    return hireDay;
}

public void setName(String name) {
    this.name = name;
}

public void setSalary(double salary) {
    this.salary = salary;
}

public void setHireDay(LocalDate hireDay) {
    this.hireDay = hireDay;
}
public void raiseSalaryt(double byPercent){
    double raise = salary*byPercent/100;
    salary+=raise;
}

@Override
public String toString() {
    return "Employee{" +
            "name='" + name + '\'' +
            ", salary=" + salary +
            ", hireDay=" + hireDay +
            '}';
}

}

Manager

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package Employee;

import java.io.Serializable;

public class Manager extends Employee implements Serializable{
    private double bouns;
    private Employee secretary;

    public void setSecretary(Employee secretary) {
        this.secretary = secretary;
    }

    public Manager(String name, double salary, int year, int month, int day) {
        super(name,salary,year,month,day);
        bouns = 0;
    }
    public double getSalary(){
        double baseSalary = super.getSalary();
        return baseSalary+bouns;
    }
    public void setBouns(double d){
        bouns = d;
    }
}

运行结果截图

image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java-继承和多态
继承(inheritance) 继承满足“is-a”规则,即Manager is a Employee
卢衍飞
2023/02/16
3800
5.1 类、超类和子类
5.1 类、超类和子类   子类比超类拥有的功能更加丰富。   在本例中,Manager类比超类Employee封装了更多的数据,拥有更多的功能。   在Manager类中,增加了一个用于存储奖金信息的域,以及一个用于设置这个域的方法: class Manager extends Employee { private double bonus; ... public void setBouns(double b) { bonus = b; }
Mister24
2018/05/14
1.1K0
零基础学Java(11)自定义类[通俗易懂]
  之前的例子中,我们已经编写了一些简单的类。但是,那些类都只包含一个简单的main方法。现在来学习如何编写复杂应用程序所需要的那种主力类。通常这些类没有main方法,却有自己的实例字段和实例方法。要想构建一个完整的程序,会结合使用多个类,其中只有一个类有main方法。
全栈程序员站长
2022/09/19
3430
Java基础系列(十八):Object类(下)
在Java中,hash code(散列码)是由对象导出的一个整型值,以下是几个常见哈希值的算法:
山禾说
2019/01/21
3770
Java基础系列(七):对象与类(下)
上节我们学习了对象和对象变量的概念,以及它们之间的区别。与此同时,我们还知道了如何自定义一个属于我们自己的类,以及多个源文件的时候的编译机制。这节课我们来剖析一下我们上节课建造的这个类。
山禾说
2019/01/21
4070
Java基础系列(十三):多态
我们借助这个例子来学习多态,所谓的多态就是一个对象变量(比如上文中的staff变量)可以指示多种实际类型的现象(比如staff既可以引用Employee对象,也可以引用它的子类Master对象)被称为多态。在运行时候能够自动地选择调用哪个方法的现象被称为动态绑定(比如,staffs[0]调用的是Master类中的 getSalary()方法,而staffs[1]和staffs[2]调用的是Employee类的 getSalary()方法)。
山禾说
2019/01/21
3980
4.3 用户自定义类
4.3.1 Employee类 package class_; import java.util.Date; import java.util.GregorianCalendar; public class EmployeeTest { public static void main(String args[]) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Carl Cracker", 75000, 1987,
Mister24
2018/05/14
8210
java cloneable 接口_Cloneable 接口 记号接口(标记接口)「建议收藏」
clone是Object超类的一个protected方法,用户代码不能直接调用这个方法。Object的子类只能调用Object超类中受保护的clone方法来克隆它自己的对象,必须重新定义clone为public才能允许所有方法调用这个类的实例的clone方法克隆对象。
全栈程序员站长
2022/09/27
7790
Java基础系列(六):对象与类(上)
封装从形式上看,封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,而操纵数据的过程称之为方法。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态。而实现封装的关键就是绝对不能让类中的方法直接访问其他类的实例域,仅仅可以通过对象的方法来与对象的数据进行交互。
山禾说
2019/01/21
3240
Java核心技术 继承
超类的private属性并不能被子类访问。假如我们编写一个Manager类继承Employee类。
菜的黑人牙膏
2019/01/21
5330
Java重要知识点(继承、多态、接口,异常,工具,测试)
当父类,和子类有Static时,先初始化Static,再初始化子类的Static,再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。
小爷毛毛_卓寿杰
2019/02/13
6690
Java重要知识点(继承、多态、接口,异常,工具,测试)
6.1 接口
6.1 接口   接口(interface)技术主要描述类具有什么功能,而并不给出每个功能的具体实现。一个类可以实现(implement)一个或多个接口,并在需要借口的地方,随时使用实现了相应接口的对象。   对象的克隆是指创建一个新对象,且新对象的状态与原始对象的状态相同,当对克隆的新对象进行修改的时候,不会影响原始对象的状态。   内部类(inner class)定义在另一个类的内部,其中的方法可以访问它们的外部类的域,这是一项复杂的技术。内部类技术主要用于设计具有相互协作关系的类集合。特别是在编写处
Mister24
2018/05/14
6650
Java的对象克隆
本节我们会讨论 Cloneable 接口,这个接口指示一个类提供了一个安全的 clone() 方法。
真正的飞鱼
2023/04/19
6450
Java的对象克隆
Java核心技术 对象与类
在Java中,使用构造器构造新实例。构造器是一种特殊的方法,用来构造并初始化对象。
菜的黑人牙膏
2019/01/21
4850
【JAVA零基础入门系列】Day13 Java类的继承与多态
本文讲解了类的继承与多态,以及其在编程中的应用。通过示例阐述了继承与多态的概念,说明了继承的好处和多态的方便之处。
弗兰克的猫
2018/01/09
9860
零基础学Java(13)方法参数
首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。按值调用表示方法接收的是调用者提供的值。而按引调用表示方法接收的是调用者提供的变量地址。方法可以修改按引用传递的变量的值,而不能修改按值传递的变量的值。
全栈程序员站长
2022/09/19
7750
零基础学Java(12)静态字段与静态方法
  之前我们都定义的main方法都被标记了static修饰符,那到底是什么意思?下面我们来看看
全栈程序员站长
2022/09/19
3200
Java泛型入门介绍--自定义泛型类\方法\通配符的问题
下面的这个只展示了我们的main方法里面的内容,实际上这个java文件里面还进行了这个cat,dog类的定义,我们想要对于这个狗的名字进行打印,然后加上这个狗的年龄;
阑梦清川
2025/02/24
390
Java泛型入门介绍--自定义泛型类\方法\通配符的问题
Java基础:继承
继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其他类中继承,否则就是在隐式地从Java的标准根类Object进行继承。
用户7886150
2020/12/04
5790
Java基础系列(九):方法参数
首先,我们要认识到一点Java中方法参数的传递都是按值调用的,方法得到的是所有参数值的一个拷贝,它并不能修改传递给它的参数变量的值。下面我们就来详细了解一下,为什么会这么说?
山禾说
2019/01/21
3940
相关推荐
java-继承和多态
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文