做购物网站公司贵阳百度快照优化排名
实体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:成员变量,对象的属性。