Java学习笔记-Java实体类详解
今天我们要聊一个看似简单却至关重要的知识点——Java实体类。就像快递小哥打包物件需要包装盒一样,在Java世界里处理数据也需要专门的容器,这就是我们的实体类!
一、实体类是什么?——程序的"快递盒子"
想象你要寄快递:需要把物品装进盒子,贴上收件人信息。实体类就是这个"快递盒子",专门用来打包程序中的数据。比如:
public class User {// 快递单号private Long id;// 收件人private String username;// 联系方式private String phone;// 地址信息private Address address;// 必须的getter/setterpublic Long getId() { return id; }public void setId(Long id) { this.id = id; }// 其他getter/setter...
}
这个User类就是典型的实体类,它具备三个显著特征:
-
纯数据容器:只包含属性字段和基本方法
-
现实映射:对应真实存在的业务对象(用户/订单等)
-
持久化能力:通常与数据库表结构对应
二、实体类要求
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方法(为了数据安全),然后主要的任务就是把数据和数据的业务处理相分离。把数据直接交给一个操作对象来进行处理。
谢谢大家的观看。如有错误请指出。