当前位置: 首页 > news >正文

Java实体类(Javabean)-编程规范

Java学习笔记-Java实体类详解

今天我们要聊一个看似简单却至关重要的知识点——Java实体类。就像快递小哥打包物件需要包装盒一样,在Java世界里处理数据也需要专门的容器,这就是我们的实体类!

一、实体类是什么?——程序的"快递盒子"

想象你要寄快递:需要把物品装进盒子,贴上收件人信息。实体类就是这个"快递盒子",专门用来打包程序中的数据。比如:

public class User {
    // 快递单号
    private Long id;
    // 收件人
    private String username;
    // 联系方式
    private String phone;
    // 地址信息
    private Address address;

    // 必须的getter/setter
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    // 其他getter/setter...
}

这个User类就是典型的实体类,它具备三个显著特征:

  1. 纯数据容器:只包含属性字段和基本方法

  2. 现实映射:对应真实存在的业务对象(用户/订单等)

  3. 持久化能力:通常与数据库表结构对应

二、实体类要求

1.类中的成员变量全部私有化,并提供public修饰的getter/setter方法。

2.类中需要提供一个无参数的构造器,有参数构造器可选。

三、实体类的应用场景

实体类的对象只负责数据存取,而对数据的业务处理交给其他类的对象来完成,以实现数据和数据业务处理相分离。

四、例子

1.新建一个学生类,注意编程规范(见代码),学生类只负责数据的存和取。

package com.itheima.javabean;

public class Student {
    //1.私有成员变量
    private String name;
    private double chinese;//语文成绩
    private double math;//数学成绩

    //提供一个有参数构造方法(可选)
    public Student(String name, double chinese, double math) {
        this.name = name;
        this.chinese = chinese;
        this.math = math;
    }

    //必须提供一个无参数构造方法
    public Student() {
    }


    //2.提供公开的getter/setter方法--》编程规范
    public String getName() {
        return name;
    }

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

    public double getChinese() {
        return chinese;
    }

    public void setChinese(double chinese) {
        this.chinese = chinese;
    }

    public double getMath() {
        return math;
    }

    public void setMath(double math) {
        this.math = math;
    }
}

一般的编程规范都会:私有化属性,通过提供公开的getter/setter等方法来暴露和修改属性,不要问为什么,这就是规范! 

2.创建学生对象

package com.itheima.javabean;

public class Test {

    public static void main(String[] args) {
        //实体类的基本作用:创建它的对象,封装数据
        Student s1 = new Student();
        s1.setName("张三");
        s1.setChinese(80);
        s1.setMath(65);
        System.out.println(s1.getName()+" "+s1.getChinese()+" "+s1.getMath());

        Student s2 = new Student("李四",100,90);
        System.out.println(s2.getName()+" "+s2.getChinese()+" "+s2.getMath());


        //实体类在开发中的应用场景
        //创建一个学生的操作对象专门对学生对象的数据进行业务处理
        StudentService operator = new StudentService();
        operator.printTotal(s1);
        operator.printAvg(s1);
    }
}

3.提供数据处理的类

package com.itheima.javabean;

public class StudentService {
    //提供方法:打印学生的总成绩
    public void printTotal(Student s) {
        System.out.println(s.getName() + "的总成绩是:" + (s.getChinese() + s.getMath()));
    }

    //提供方法:打印学生的平均成绩
    public void printAvg(Student s) {
        System.out.println(s.getName() + "的平均成绩是:" + (s.getChinese() + s.getMath()) / 2);
    }


}

运行结果:

张三 80.0 65.0
李四 100.0 90.0
张三的总成绩是:145.0
张三的平均成绩是:72.5

结语: 

  实体类我认为就是一种编程的规范,开发方式,进行分类管理,类中的成员变量全部私有化,并提供public修饰的getter/setter方法(为了数据安全),然后主要的任务就是把数据和数据的业务处理相分离。把数据直接交给一个操作对象来进行处理。

谢谢大家的观看。如有错误请指出。

相关文章:

  • 自动学习和优化过程,实现更加精准的预测和决策的智慧交通开源了
  • 神聖的綫性代數速成例題13. 非齊次方程組解的性質、非齊次方程組解的討論
  • python:music21 构建 LSTM+GAN 模型生成爵士风格音乐
  • [笔记] TinyWebServer编译及demo运行过程
  • 什么是PHP伪协议
  • 详细解释计算机系统中的大小端
  • Unity摄像机基本操作详解:移动、旋转与缩放
  • qt实现一个简单http服务器和客户端
  • 前端(vue)学习笔记(CLASS 5):自定义指令插槽路由
  • 熔断降级(Sentinel解决)
  • 在OpenGL ES中将值传入shader的方法总结
  • 一条不太简单的TEX学习之路
  • 论文阅读:Attention is all you need
  • 从PGC到AIGC:海螺AI多模态内容生成系统的技术革命
  • android 音量调节
  • 【第二十八周】:Temporal Segment Networks:用于视频动作识别的时间分段网络
  • vue3配置代理实现axios请求本地接口返回PG库数据【前后端实操】
  • 【回归算法解析系列12】分位数回归(Quantile Regression)
  • JAVA读取/解析 指定文件内容
  • 使用 Spring Security的一些常用功能
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 贵州茅台一季度净利268亿元增长11.56%,系列酒营收增近两成
  • 习近平对辽宁辽阳市白塔区一饭店火灾事故作出重要指示
  • 牛市早报|国家发改委:将推出做好稳就业稳经济推动高质量发展若干举措
  • 中共中央、国务院关于表彰全国劳动模范和先进工作者的决定
  • 俄罗斯总统普京:5月8日零时至11日零时实施停火