一.封装
1.基本介绍
封装(encapsulation)就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作,才能对数据进行操作
简而言之,就是对数据加以限制或进行保护,比如,需要调取对象private属性,可以通过设置验证码,对数据进行保护
2.封装的优点
1)隐藏实现细节
2)可以对数据进行验证,保证安全合理
3.封装实现的步骤(三步)
1)将属性进行私有化private(不能直接修改属性)
2)提供一个公共的(public)set方法,对属性进行判断和复制
public void setXxx (类型,参数名){Xxx 表示某个属性
加入数据验证或对数据进行赋值
属性 = 参数名}
3)提供一个公共的(public)get方法,用于获取属性的值
public 数据类型 getXxx(){权限判断,Xxx某个属性
return xx;}
4.入门案例
不能随便查看工人的年龄,工资的隐私,并对设置的年龄进行合理的验证,年龄必须在0——120,名字长度2——6,工资不能直接查看
package 面向对象中级;
import java.util.Scanner;
public class encap{
public static void main(String[] args) {
Person person = new Person();
person.setName("jack");
person.setAge(30);
person.setSalary(30000);
System.out.println("请输入验证码查看工资");
Scanner myscanner = new Scanner(System.in);
int n = myscanner.nextInt();
System.out.println(person.info(n));//验证码输入为123456时可以访问工资
}
}
class Person{
//封装
public String name;
private int age;
private double salary;
private String job;
//怎么在主类给age salar 初始化
public void setName(String name){
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
}else {
System.out.println("名字长度不对");
}
}
public String getName(){
return name;
}//快捷键ALT + insert
public int getAge() {
return age;
}
public void setAge(int age) {
//判断
if (age >= 1&& age <= 120) {
this.age = age;
}else {
System.out.println("年龄需在0——120,默认年龄10");
this.age = 10;//给一个默认年龄
}
}
public double getSalary(int n) {
if (n == 123456) {
return salary;
}else{
System.out.println("你的权限不够");
return 0.0;
}
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
//
public String info(int n){
return "信息为 name=" + name + " age="+age+" salary="+getSalary(n);
}