封装
什么是封装?
就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去。
面向对象的三大特征:封装、继承、多态。
封装的设计规范是什么样的?
合理隐藏,合理暴露。
package com.xinbao.encapsulation;
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.setScore(100);
System.out.println(s1.getScore());
System.out.println();
s1.printPass();
}
}
package com.xinbao.encapsulation;
public class Student {
//合理隐藏,合理暴露
private double score;
public void setScore(double score){
if (score >= 0 && score <= 100){
this.score = score;
}else{
System.out.println("illegal");
}
}
public double getScore(){
return score;
}
public void printPass(){
System.out.println(score >= 60 ? "pass" : "unpass");
}
}
E:\JVsoft\Java\jdk-17\bin\java.exe -javaagent:E:\JVsoft\IntelliJIDEA2021.1.1\lib\idea_rt.jar=17885:E:\JVsoft\IntelliJIDEA2021.1.1\bin -Dfile.encoding=UTF-8 -classpath E:\JVsoft\code\out\production\oop-app com.xinbao.encapsulation.Test
100.0
pass
Process finished with exit code 0
实体类
1.什么是实体类?有啥特点?
成员变量必须私有,且要为他们提供 get 、 set 方法;必须有无参数构造器。.仅仅只是一个用来保存数据的 java 类,可以用它创建对象,保存某个事物的数据。
2.实体类有啥应用场景?
.实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离
package com.xinbao.javabean;
public class Test {
public static void main(String[] args) {
Student s1 = new Student();//调用无参构造器
s1.setName("Cindy");
s1.setScore(100);
System.out.println(s1.getName());
System.out.println(s1.getScore());
//创建一个StudentOperator对象
StudentOperator operator = new StudentOperator(s1);
operator.printPass();
}
}
package com.xinbao.javabean;
//实体类保存数据
public class Student {
//1.必须私有成员变量,并为每个成员变量都提供get set方法
private String name;
private double score;
//2.必须为类提供一个公开的无参构造器(java自动生成)
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 com.xinbao.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() + " pass");
}else{
System.out.println(student.getName() + " unpass");
}
}
}
E:\JVsoft\Java\jdk-17\bin\java.exe -javaagent:E:\JVsoft\IntelliJIDEA2021.1.1\lib\idea_rt.jar=17978:E:\JVsoft\IntelliJIDEA2021.1.1\bin -Dfile.encoding=UTF-8 -classpath E:\JVsoft\code\out\production\oop-app com.xinbao.javabean.Test
Cindy
100.0
Cindy pass
Process finished with exit code 0