Java大数据开发和安全开发
- (一)Java的封装
- 1.1 什么是封装
- 1.1.1 封装的设计规范
- 1.1.2 代码层面如何控对象的成员公开或隐藏?
- 1.2 JavaBean(实体类)
- 1.2.1创建实体类
- 1.2.2 实体类有啥应用场景?
- 1.2.3 实体类总结
- 1.3 static关键字
- 1.3.1 static修饰成员变量
- 1.3.1 static修饰成员变量的应用场景
- 1.3.1 static修饰成员方法
- 1.3.1 static修饰成员方法的应用场景
- 1.3.1 static的注意事项
- 1.3.1 static的应用知识:代码块
- 1.3.1 static的应用知识:单例设计模式
(一)Java的封装
1.1 什么是封装
- 就是用类设计对象处理某一个事物的数据时,应该把要处理的数据,以及处理这些数据的方法,设计到一个对象中去
- 要处理的数据
- 处理数据的方法
- 写到一个类里就是封装 如下
1.1.1 封装的设计规范
- 合理隐藏
- 合理暴露
- private
public class Student {
private String name;
double chinese;
double math;
private void printTotalScore() {
System.out.println(name + "的总成绩是:" + (chinese + math));
}
public void printAverageScore() {
System.out.println(name + "的平均成绩是:" + (chinese + math) / 2.0);
}
}
怎么达到合理隐藏 合理暴露呢
控制输入
控制输出
为了防止别人随意传值,使用私有化变量,然后让用户通过公有方法访问给私有变量赋值
public class Student {
private String name; // 私有变量 不允许访问
private double score;
private double math;
public void setScore(String name,double score,double math){
if ((score >= 0 && score <= 100) && (math >=0 && math<=100)){
this.name = name;
this.score = score;
this.math = math;
} else {
System.out.println("数据非法");
}
}
public double getScore(){
return score;
}
private void printTotalScore() { // 私有方法 不允许访问
System.out.println(name + "的总成绩是:" + (chinese + math));
}
public void printAverageScore() {
System.out.println(name + "的平均成绩是:" + (chinese + math) / 2.0);
}
}
public class Test {
public static void main(String[] args) {
// 目标:掌握封装的设计规范:合理隐藏、合理暴露。
Student s1 = new Student();
s1.setScore("liyang",55,66);
System.out.println(s1.getScore());
}
}
1.1.2 代码层面如何控对象的成员公开或隐藏?
- 公开成员,可以使用public(公开)进行修饰。
- 隐藏成员,使用private(私有,隐藏)进行修饰。
1.2 JavaBean(实体类)
什么是实体类?
- 就是一种特殊形式的类。
1.2.1创建实体类
- 1.先创建两个私有变量
public class Student {
private String name;
private double score;
}
2.选中变量右键选择generate,可以创建有参构造器,set方法,get方法
- 3.无参构造方法选择selec none
public class Student {
//1、必须私有成员变量,并为每个成员变量都提供getset方法
private String name;
private double score;
//2、必须为类提供一个公开的无参数构造器
public Student() {
}
public Student(String name, double score) {
this.name = name;
this.score = score;
}
public void setName(String name) {
this.name = name;
}
public void setScore(double score) {
this.score = score;
}
public String getName() {
return name;
}
public double getScore() {
return score;
}
}
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());
}
}
1.2.2 实体类有啥应用场景?
- 实体类只负责数据存取,而对数据的处理交给其他类来完成,以实现数据和数据业务处理相分离
操作类处理数据
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() + "学生成绩不及格");
}
}
}
实体类保存数据
```java
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();
}
}
1.2.3 实体类总结
- 什么是实体类?有啥特点?
- 成员变量必须私有,且要为他们提供get、set方法;必须有无参数构造器
- 仅仅只是一个用来保存数据的java类,可以用它创建对象,保存某个事物的数据。
- 实体类有啥应用场景?
- 实体类对应的是软件开发里现在比较流行的开发方式,数据和数据的业务处理相分离
1.3 static关键字
static关键字的概念:
静态的意思,可以修饰成员变量、成员方法。
1.3.1 static修饰成员变量
成员变量按照有无static修饰,分为两种:
-
类变量
-
实例变量(对象的变量)
-
类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享
-
实例变量(对象的变量):无static修饰,属于每个对象的
public class Test {
public static void main(String[] args) {
// 目标:掌握有无static修饰成员变量的用法,特点。
// 1、类变量的用法。
// 类名.类变量(推荐)
Student.name ="袁华";
// 对象.类变量(不推荐)
Student s1 = new Student();
s1.name ="马冬梅"; //会被类的全部对象共享
Student s2 = new Student();
s2.name="秋雅"; //会被类的全部对象共享
System.out.println(s1.name);// 秋雅
System.out.println(Student.name);// 秋雅
//2、实例变量的用法:属于每个对象的变量
// 对象.实例变量
s1.age = 23;
s2.age = 18;
System.out.println(s1.age);//23
}
}
public class Student {
// 类变量
static String name;
// 实例变量(对象的变量)
int age;
}
成员变量的执行原理
1.3.1 static修饰成员变量的应用场景
类变量的应用场景
- 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住
案例导学:
- 系统启动后,要求用户类可以记住自己创建了多少个用户对象了
public class User {
// 类变量
public static int number;
public User(){
// User.number++;
// 注意:在同一个类中,访问自己类的类变量,才可以省略类名不写。
number++;
}
}
public class Test2 {
public static void main(String[] args) {
// 目标:通过案例理解类变量的应用场景、
User ul = new User();
User u2 = new User();
User u3 = new User();
User u4 = new User();
System.out.println(User.number);
}
}
1.3.1 static修饰成员方法
成员方法的分类
类方法 :有static修饰的成员方法,属于类。
实例方法 :无static修饰的成员方法,属于对象
public class Student {
double score;// 类方法
public static void printHelloWorld() {
System.out.println("Hello World");
System.out.println("Hello World");
}
//实例方法(对象的方法)
public void printPass(){
System.out.println("成绩:" +
(score >=60 ?"及格":"不及格"));
}
}
public class Test {
public static void main(String[] args) {
// 目标:掌握有无static修饰方法的用法。// 1、类方法的用法
// 类名.类方法(推荐)
Student.printHelloWorld();
// 对象.类方法(不推荐)
Student s= new Student();
s.printHelloWorld();
// 2、实例方法的用法// 对象.实例方法
s.printPass();
// Student.printPass();// 报错
}
}