第一步

将属性进行私有化private【不能直接修改属性】

第二步

提供公共的(public)方法(比如set方法,用于对属性判断并赋值)

public void setXxx(类型 参数名){ //加入数据验证的业务逻辑 属性 = 参数名; }

第三步

提供一个公共的get方法,用于获取属性值

public 数据类型 getXxx(){//权限判断 return XX; }

代码演示

  1. public class Test {
  2. public static void main(String[] args) {
  3. Person person = new Person();
  4. person.name = "wty";
  5. //私有无权限
  6. //person.age = 19;
  7. //person.salary = 100000;
  8. person.setName("wtywtyw");
  9. person.setAge(19);
  10. person.setSalary(100000);
  11. System.out.println(person.info());
  12. System.out.println("======wty======");
  13. //如果我们使用构造器指定属性
  14. Person wty = new Person("wty", 2000, 100000);
  15. System.out.println(wty.info());
  16. }
  17. }
  18. class Person{
  19. public String name;//名字公开
  20. private int age;//年龄私有
  21. private double salary;
  22. //构造器
  23. public Person() {
  24. }
  25. //有三个属性的构造器
  26. public Person(String name, int age, double salary) {
  27. // this.name = name;
  28. // this.age = age;
  29. // this.salary = salary;
  30. //我们可以将set方法写在构造器中,任然可以验证
  31. setName(name);
  32. setAge(age);
  33. setSalary(salary);
  34. }
  35. //使用快捷键 Alt + Insert
  36. //可以根据需求进行具体的限制
  37. public String getName() {
  38. return name;
  39. }
  40. public void setName(String name) {
  41. //加入对属性的校验
  42. if(name.length() >= 2 && name.length() <= 6){
  43. this.name = name;
  44. }else{
  45. System.out.println("名字有误,需要(2-6)个字符");
  46. this.name = "无名";
  47. }
  48. }
  49. public int getAge() {
  50. return age;
  51. }
  52. public void setAge(int age) {
  53. //判断
  54. if(age >= 1 && age <= 120){//合理范围
  55. this.age = age;
  56. }else{
  57. System.out.println("你设置的年龄有误,需要在(1-120)之间,给你默认年龄18");
  58. this.age = 18;
  59. }
  60. }
  61. public double getSalary() {
  62. //可以增加对当前对象的权限判断
  63. return salary;
  64. }
  65. public void setSalary(double salary) {
  66. this.salary = salary;
  67. }
  68. //写一个方法,返回属性信息
  69. public String info(){
  70. return "信息为 name = " + name + " age = " + age + " salary = " + salary;
  71. }
  72. }

image.png