Java之封装(学习笔记)
封装定义(个人理解:)
封装就像电视遥控器的按钮,比如音量键,对于我们使用者来说就是可以直接按下去调控音量,对于代码写作者来说就是封装了调控音量的方法,使得我们只能去调控,不能改变内部。
封装的实现步骤:
将属性进行私有化private 【不能直接修改属性】
提供一个公共的(public)set方法,用户堆属性判断并赋值
public void setXxx(类型 参数名) { // Xxx -> 表示某个属性//加入数据验证的业务逻辑属性 = 参数名; }提供一个公共的(public)get方法,用于获取属性的值
public 数据类型 getXxx() { //权限判断,Xxx某个属性return xx; }
问题样例:
设置一个小程序,不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认年龄18岁,必须在1-100岁之间。年龄,工资不能直接查看,name的长度在2-6个字符之间。
代码示例:
import java.util.Scanner;public class text01 {public static void main(String[] args) {Person person1 = new Person("simth",200,1400);System.out.println(person1.info());}
}class Person{public String name;private int age;private double salary;public Person() {}public Person(String name, int age, double salary) {
// this.name = name;
// this.age = age;
// this.salary = salary;setName(name);setAge(age);setSalary(salary);}public String getName() {return name;}public void setName(String name) {if(name.length() >= 2 && name.length() <= 6)this.name = name;else{System.out.println("您输入的名字不在2-6个字符之间,给您默认名字");this.name = "默认名";}}public int getAge() {return age;}public void setAge(int age) {if(age >= 1 && age <= 100)this.age = age;else{System.out.println("您输入的年龄不在1-100岁之间,给您默认年龄18岁");this.age = 18;}}public double getSalary() {System.out.println("您需要输入6位密码才能得到工资显示:");Scanner sc = new Scanner(System.in);int res = sc.nextInt();if(res == 123456)return salary;else{System.out.println("抱歉您输入的密码不对。查看不了工资~ 返回值:0.0");this.salary = 0.0;return salary;}}public void setSalary(double salary) {this.salary = salary;}public String info(){this.getSalary();return "name:" + name + ",\tage:" + age + ",\tsalary:" + salary;}
}
构造器与封装
还是上面的案例,当我们需要有构造器的时候,比如:
那么怎么解决这种情况呢?
如果有错误欢迎小伙伴留言,这里仅是学习参考笔记,喜欢的留个关注再走吧~