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

Java入门基础学习笔记41——实体类

实体JavaBean/实体类:

就是一种特殊形式的类。

1)这个类中的成员变量都要私有,并且要对外提供相应的getXXX,setXXX的方法。

2)类中必须要有一个公共的无参的构造器。其他的构造器可写可不写。

右键菜单中,选择:Generate选项:

选择Getter and Setter:

使用shift键或者ctrl键,选择name和score:

也可以自动生成有参构造器。

那么,还是需要自动生成无参构造器。Select None。

package cn.ensource.javabean;public class Student {private String name;private double score;// 必须为类提供一个公开的无参数构造器public Student() {}// 有参构造器public Student(String name, double score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
package cn.ensource.javabean;public class Test {public static void main(String[] args) {// 目标:掌握实体类的书写要求、特点、应用场景Student s1 = new Student();s1.setName("播妞");s1.setScore(99);System.out.println(s1.getName());System.out.println(s1.getScore());}
}

运行结果:

实体类有什么特点:我们可以看出来,实体类中,只有成员变量和getter、setter方法,实体类仅仅是一个用来保存数据的java类。其中没有其他处理数据的方法,所以,我们只能用它存取数据。就是用来保存某个事物的数据的。

JAVAWEB阶段会有应用,主要是数据的实体,作为CRUD的载体。

实体类有什么应用场景?

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

这是一种流行的开发模式。

 

package cn.ensource.javabean;public class Student {private String name;private double score;// 必须为类提供一个公开的无参数构造器public Student() {}// 有参构造器public Student(String name, double score) {this.name = name;this.score = score;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}
package cn.ensource.javabean;public class StudentOperator {private Student student;public StudentOperator(Student student) {this.student = student;}public void printPass() {if (student.getScore() >= 60) {System.out.println(student.getName() + "学生成绩及格");} else {System.out.println(student.getName() + "学生成绩不及格");}}
}

package cn.ensource.javabean;public class Test {public static void main(String[] args) {// 目标:掌握实体类的书写要求、特点、应用场景Student s1 = new Student();s1.setName("播妞");s1.setScore(99);System.out.println(s1.getName());System.out.println(s1.getScore());StudentOperator operator = new StudentOperator(s1);operator.printPass();}
}

运行结果:

实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离。

面向对象的综合案例:

模仿电影信息系统:

需求:

展示系统中的全部电影:(每部电影展示:名称和价格)

允许用户根据电影的编号(id)查询出每个电影的详细信息。

目标:

使用所学的面向对象编程实现以上两个需求。

package cn.ensource.demo;public class Movie {private int id;private String name;private double price;private double score;private String director;private String actor;private String info;public Movie() {}public Movie(int id, String name, double price, double score, String director, String actor, String info) {this.id = id;this.name = name;this.price = price;this.score = score;this.director = director;this.actor = actor;this.info = info;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}public String getDirector() {return director;}public void setDirector(String director) {this.director = director;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

 

package cn.ensource.demo;public class MovieOperator {private Movie[] movies;public MovieOperator(Movie[] movies) {this.movies = movies;}// 业务需求:展示全部电影信息public void printAllMovies() {for (int i = 0; i < movies.length; i++) {System.out.println("----系统全部电影如下----");Movie movie = movies[i];System.out.println("编号:" + movie.getId());System.out.println("名称:" + movie.getName());System.out.println("价格:" + movie.getPrice());System.out.println("-----------");}}// 根据电影的编号(id)查询出每个电影的详细信息public void SearchMovieById(int id) {for (int i = 0; i < movies.length; i++) {Movie movie = movies[i];if (movie.getId() == id) {System.out.println("电影详细如下:");System.out.println("编号:" + movie.getId());System.out.println("名称:" + movie.getName());System.out.println("价格:" + movie.getPrice());System.out.println("得分:" + movie.getScore());System.out.println("导演:" + movie.getDirector());System.out.println("主演:" + movie.getActor());System.out.println("其他信息:" + movie.getInfo());return;}else {System.out.println("没有该电影信息!");}}}
}

 

package cn.ensource.demo;import java.util.Scanner;public class Test {public static void main(String[] args) {// 设计一个电影类// 电影的操作类进行业务处理// 准备全部电影数据Movie[] movies = new Movie[4];movies[0] = new Movie(1, "水门桥1", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[1] = new Movie(2, "出拳吧", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[2] = new Movie(3, "月球损落", 38.9, 9.8, "徐克", "吴京", "12万人观看");movies[3] = new Movie(4, "一点就到家", 38.9, 9.8, "徐克", "吴京", "12万人观看");MovieOperator movieOperator = new MovieOperator(movies);Scanner scanner = new Scanner(System.in);while (true) {System.out.println("==电影信息系统==");System.out.println("1. 查询全部电影信息");System.out.println("2. 根据ID查询某个电影的详细信息展示");System.out.println("请您输入操作命令: ");int command = scanner.nextInt();switch (command) {case 1:movieOperator.printAllMovies();break;case 2:System.out.println("请您输入要查询的电影的Id: ");int id = scanner.nextInt();movieOperator.SearchMovieById(id);break;default:System.out.println("您输入的命令有问题!");}}}
}

运行结果:

==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 
1
----系统全部电影如下----
编号:1
名称:水门桥1
价格:38.9
-----------
----系统全部电影如下----
编号:2
名称:出拳吧
价格:38.9
-----------
----系统全部电影如下----
编号:3
名称:月球损落
价格:38.9
-----------
----系统全部电影如下----
编号:4
名称:一点就到家
价格:38.9
-----------
==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 
2
请您输入要查询的电影的Id: 
3
电影详细如下:
编号:3
名称:月球损落
价格:38.9
得分:9.8
导演:徐克
主演:吴京
其他信息:12万人观看
==电影信息系统==
1. 查询全部电影信息
2. 根据ID查询某个电影的详细信息展示
请您输入操作命令: 

其中:扫描器放在while语句外边,如果放在while里面,就会每次都会创建一个扫描器,浪费空间。

成员变量和局部变量的区别?

如果有C++的基础,这块还是很好理解的。

Field:成员变量,对象的属性。

http://www.lryc.cn/news/353265.html

相关文章:

  • 【Linux】信号之信号的保存和处理详解
  • 基于Django的图书管理系统
  • js实现元素根据鼠标滚轮滚动向左右上下滑动着从模糊到清楚显示出来
  • yocto学习
  • 【IC设计】牛客网-序列检测习题总结
  • python爬虫登录到海康相机管理页面
  • 9.Docker网络
  • Windows VS2022 C语言使用 sqlite3.dll 访问 SQLite数据库
  • java库和包的概念
  • mysql内存结构
  • Python | Leetcode Python题解之第111题二叉树的最小深度
  • c++二进制输出
  • 5. C++网络编程-UDP协议的实现
  • Altium Designer 中键拖动,滚轮缩放,并修改缩放速度
  • python从入门到精通04
  • tomcat三级指导
  • 不知道是该怎么引用多个函数片段?具体示例如代码
  • P3128 [USACO15DEC] Max Flow P题解(树上差分,最近公共祖先,图论)
  • 在Linux上面部署ELK
  • Langchain-Chatchat的markdownHeaderTextSplitter使用
  • 掩码生成蒸馏——知识蒸馏
  • 【C#实战】Newtonsoft.Json基类子类解析
  • 表达式求值的相关语法知识(C语言)
  • 开发中遇到Electron自定义窗口的问题
  • c# sqlite使用
  • 39、Flink 的窗口剔除器(Evictors)详解
  • Flutter 中的 DefaultTabController 小部件:全面指南
  • C++技能进阶指南——多态语法剖析
  • Linux内存管理--系列文章肆
  • kali下载zsteg和stegpy