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 – Fat Jar示例详解

    下面我来详细讲解“Springboot – Fat Jar示例详解”的完整攻略。 简介 首先介绍一下什么是Fat Jar。简单来说,它是一个可以包含应用程序所有依赖库的大型JAR文件,因此它也被称为可执行JAR文件。SpringBoot可以使用Maven或Gradle生成Fat Jar,其他构建工具也支持类似的功能。 在使用Fat Jar时,需要做的就是提供…

    Java 2023年5月19日
    00
  • day01-项目介绍&功能实现

    项目介绍&功能实现 1.项目介绍&环境搭建 一个以社交平台为核心的轻电商项目,功能如下: 短信登录、商户查询缓存、优惠券秒杀、达人探店、好友关注、附近的商户、用户签到、UV统计 1.1项目架构 1.2项目环境搭建 1.2.1后端项目搭建 mysql的版本采用5.7及以上版本 (1)首先创建数据库,需要创建的表有: tb_user:用户表 tb…

    Java 2023年4月19日
    00
  • Java 基础之NIO 学习详解

    Java 基础之NIO 学习详解 简述 NIO,全称为“New IO”,是Java 1.4 引入的一套用于更高效的 I/O 操作的API。NIO主要包括以下三个核心组件:Channel、Buffer 和 Selector。其中,Channel 和 Buffer 主要用于底层数据传输,Selector 则用于监听 Channel 上的 IO 事件。 NIO 与…

    Java 2023年5月26日
    00
  • JavaSpringBoot报错“RollbackException”的原因和处理方法

    原因 “RollbackException” 错误通常是以下原因引起的: 数据库事务问题:如果您的数据库事务存在问题,则可能会出现此错误。在这种情况下,需要检查您的数据库事务并确保它们正确。 并发问题:如果您的应用程序存在并发问题,则可能会出现此错误。在这种情况下,您需要检查您的应用程序并确保它们正确。 事务管理器问题:如果您的事务管理器存在问题,则可能会出…

    Java 2023年5月4日
    00
  • 利用Spring boot如何创建简单的web交互应用

    使用Spring Boot创建简单的Web交互应用的完整攻略如下: 创建Spring Boot项目 首先,我们需要创建一个Spring Boot项目。可以使用Spring Initializr来创建一个新的Spring Boot项目。以下是创建Spring Boot项目的步骤: 打开Spring Initializr网站,选择项目的类型和语言,然后点击Gen…

    Java 2023年5月15日
    00
  • java统计字符串中指定元素出现次数方法

    Java统计字符串中指定元素出现次数方法攻略 在Java中统计字符串中指定元素出现次数,我们通常有以下几种方法: 1. 使用正则表达式 我们可以使用正则表达式来匹配指定元素出现的次数。下面是一个示例代码: public static int countOccurrencesUsingRegex(String str, String element) { St…

    Java 2023年5月27日
    00
  • 在Java中String和Date、Timestamp之间的转换

    在Java中,String、Date和Timestamp之间的转换十分常见。本篇攻略将详细介绍如何在它们之间转换。 1. String –> Date/Timestamp 1.1 String –> Date 要将字符串转换为日期,我们可以使用SimpleDateFormat类。SimpleDateFormat支持各种日期格式,比如”yyyy…

    Java 2023年5月20日
    00
  • 将List集合中的map对象转为List<对象>形式实例代码

    将List集合中的map对象转为List<对象>形式的过程可以分为两步,首先我们需要定义一个实体类,其次根据该实体类将List中的Map转换成 List<实体类> 的形式。 以下是完整攻略: 第一步:定义实体类 在将List中的Map转换成 List<实体类> 的形式时,需要先定义实体类。实体类中的属性对应Map中的key…

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