java实现两个对象之间传值及简单的封装

下面是详细讲解“java实现两个对象之间传值及简单的封装”的完整攻略。

什么是对象间传值

Java 中,变量本身是没有值的,它只是指向内存中存储数据的位置,也就是说,对象间传值其实就是将一个对象中的数据(值)赋值给另一个对象,使它们拥有相同的数据。

简单的封装

Java 中的封装是将数据和操作数据的方法(行为)包装在一起,对数据的访问进行限制,使其不能随意的被外部所访问或者修改,从而保证数据的安全性和合理性。

Java 中的封装通过使用访问修饰符来实现:

  • public:公有访问修饰符,可以被外部访问和修改
  • private:私有访问修饰符,只能在类的内部访问和修改

我们可以使用getter和setter方法来访问和修改对象的数据,同时对数据进行简单的校验和控制。

两个对象之间传值示例

下面以一个简单的 Person 类为例来讲解如何实现两个对象之间传值及简单的封装:

public class Person {

    private String name;
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) throws Exception {
        if (name.equals("")) {
            throw new Exception("姓名不能为空!");
        }
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) throws Exception {
        if (age < 0 || age > 150) {
            throw new Exception("年龄必须在0到150之间!");
        }
        this.age = age;
    }

    public void introduce() {
        System.out.println("我叫" + this.name + ",今年" + this.age + "岁。");
    }
}

在上面的代码中,我们定义了一个 Person 类,包含了姓名和年龄两个变量,以及获取和设置这两个变量的方法。在设置方法中,我们通过简单的校验来保证数据的合理性和安全性。在 introduce 方法中,我们输出了一个人的基本信息。

下面我们来使用这个类进行两个对象之间传值的示例:

public class Main {

    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person();
        try {
            person1.setName("张三");
            person1.setAge(20);
            System.out.println("person1:");
            person1.introduce();
            person2.setName(person1.getName());
            person2.setAge(person1.getAge());
            System.out.println("person2:");
            person2.introduce();
            person1.setName("");
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

在上面的代码中,我们创建了两个 Person 对象 person1 和 person2。首先为 person1 设置姓名和年龄,并输出 person1 的基本信息。然后将 person1 的姓名和年龄分别赋值给 person2,使 person2 拥有同样的数据,最后输出 person2 的基本信息。注意,在赋值时,我们调用的是 person1 和 person2 的 getter 和 setter 方法,以此来控制数据的安全性和合理性。最后为了测试异常情况,我们将 person1 的姓名设置为空字符串,这时将会抛出一个异常。

另一个对象之间传值示例

对于简单的数据类型,我们可以通过传递参数的方式来实现另一个对象之间传值。但对于复杂的数据类型,可以采用序列化和反序列化的方式来实现。以下是一个简单的序列化和反序列化示例:

import java.io.*;

public class Main {

    public static void main(String[] args) throws IOException, ClassNotFoundException {
        Person person1 = new Person("张三", 20);
        Person person2;
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        // 序列化对象
        objectOutputStream.writeObject(person1);
        objectOutputStream.flush();
        objectOutputStream.close();
        // 反序列化对象
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
        ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
        person2 = (Person) objectInputStream.readObject();
        objectInputStream.close();
        System.out.println("person1:");
        person1.introduce();
        System.out.println("person2:");
        person2.introduce();
    }
}

class Person implements Serializable {

    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("我叫" + this.name + ",今年" + this.age + "岁。");
    }
}

在上面的代码中,我们定义了一个 Person 类实现 Serializable 接口,以支持序列化和反序列化。我们创建了一个 person1 对象,并将其序列化到一个字节数组中。然后再从字节数组中反序列化出 person2 对象,并输出两个对象的基本信息。

通过以上两个示例,我们可以看到,Java 实现两个对象之间传值及简单的封装非常简单,只需使用 getter 和 setter 方法来控制数据的安全性和合理性即可。对于复杂的对象类型,则可以采用序列化和反序列化来实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现两个对象之间传值及简单的封装 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • SpringBoot中异常处理实战记录

    接下来我就详细讲解一下“SpringBoot中异常处理实战记录”的完整攻略。 一、背景介绍 在SpringBoot的开发中,异常处理是必不可少的环节。在程序的运行过程中,可能会遇到各种异常,如数据库连接异常、空指针异常、参数异常等,这些异常如果没有有效的处理,会导致系统运行出错,甚至直接崩溃。因此,合理的异常处理是保证系统稳定性和高效性的重要一环。 二、异常…

    Java 2023年5月27日
    00
  • Java面试问题知识点总结

    Java面试问题知识点总结 Java开发人员在准备面试时需要了解重要的Java面试问题知识点。这是一个综合性的总结,包括Java基础知识,Java程序设计、Java集合、Java并发和多线程、Java面向对象特性和JVM等主题。 Java基础知识 Java基础知识包括Java程序的基础、Java的数据类型、Java的运算符、流程控制语句和异常处理等。 在基础…

    Java 2023年5月20日
    00
  • AngularJS基于provider实现全局变量的读取和赋值方法

    要实现全局变量的读取和赋值,可以使用AngularJS中的provider。 provider是AngularJS中的一个服务提供者,它可以在config阶段(即AngularJS框架初始化之前)注入到AngularJS应用中。用它可以将服务定义成可配置的,在应用配置阶段根据需要进行一些配置。 使用provider实现全局变量的读取和赋值,需要先定义一个pr…

    Java 2023年6月15日
    00
  • 在 IDEA 中创建 Spring Boot 项目的方式(详细步骤教程)

    开发环境 以下是我的开发环境 JDK 1.8 Maven 3.6.3 IDEA 2019(2019 无所畏惧,即使现在已经 2023 年了哈哈哈) 使用 Maven 的方式创建 Spring Boot 项目 下面的内容可能会因 IDEA 版本不同,而有些选项不同,但是大同小异。 1. 打开 IDEA 点击 Create New Project 2. 点击 M…

    Java 2023年5月11日
    00
  • Java实现文件及文件夹的删除

    当需要删除一个文件或文件夹时,我们可以使用Java中的File类的delete()方法来完成。本文将详细讲解Java实现文件及文件夹的删除的完整攻略。 删除文件 删除文件的过程非常简单,只需要创建一个File对象,然后调用delete()方法即可。 示例代码: File file = new File("path/to/file"); i…

    Java 2023年5月19日
    00
  • Java异常继承结构解析_动力节点Java学院整理

    Java异常继承结构解析 异常概述 在Java语言中,异常分为两种:检查异常和非检查异常。 检查异常,也叫已检查异常,是指Java编译器在编译时会检查的异常,而且这种异常要么被捕获,要么被声明抛出。 非检查异常,也叫未检查异常,是指Java编译器不检查的异常。这种异常通常是由程序逻辑而不是语法错误引起的,比如空指针异常、类型转换异常等。 Java中的所有异常…

    Java 2023年5月26日
    00
  • IDEA 开发多项目依赖的方法(图文)

    这里是详细的攻略: 介绍 在使用 Intellij IDEA 开发多个项目时,我们有时会遇到某个项目依赖于另一个项目的情况。如何在 IDEA 中很好地管理这些依赖关系呢?本文将介绍使用 Maven 和 Gradle 管理多项目依赖的方法,并提供两个示例。 使用 Maven 管理多项目依赖 步骤 1:创建 Maven 父项目 首先,我们需要创建一个 Maven…

    Java 2023年5月19日
    00
  • protobuf与json转换小结

    protobuf与json转换小结是一个比较常见的问题,在这里我将为你提供一个完整的攻略。 什么是protobuf Protobuf(Protocol Buffers)是Google开发的一种轻便、高效、通用的数据序列化格式,可以用于数据存储、RPC(Remote procedure call)和数据交换等领域。它与XML和JSON等其他序列化格式相比,更为…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部