4种访问修饰符

使用注意事项:

1.修饰符可以用来修饰类中的属性,成员方法以及类

2.只有默认的和public才能修饰类,并且遵循上述访问权限的特点

3.因为没有学习继承,因此关于在子类中的访问权限

4.成员方法的访问规则和属性完全一样。 

 

实现封装的步骤(三步)

1.将属性进行私有化private(不能直接修改属性)

2.提供一个公共的(public)set的方法,用于对属性判断并赋值

public void setXxxx(类型 参数名){Xx代表某个属性 

//加入数据验证的业务逻辑       

 属性 = 参数名

}

3.提供一个公共的(public)get方法,用于获取属性的值

public数据类型getXxx(){

权限判断,Xxx某个属性

return xx;

}

案列如下:

复制代码
 1 package com.test;
 2 
 3 public class Demo01 {
 4     public static void main(String[] args) {
 5         Person can = new Person();
 6         can.setName("markldsfc");
 7         can.setAge(260);
 8         can.setSal(150000);
 9         System.out.println(can.Info());
10         System.out.println(can.getSal());
11     }
12 }
13 
14 /*
15 不能随便查看别人的年龄,工资等隐私,并对设置的年龄进行合理的验证,
16 年龄合理设置,否则给默认年龄,必须在1-120,工资不能直接查看,name的长度在2到6的字节之间
17  */
18 class Person {
19     public String name;  //名字公共
20     private int age; //名字私有化,其他类不能访问,需要应set和get
21     private double sal;//工资私有化,其他类不能访问,需要应set和get
22 
23     //使用Alt+Insert
24     public String getName() {
25         return name;
26     }
27 
28     public void setName(String name) {
29         //对名字长度进行限制
30         if (name.length() >= 2 && name.length() <= 6) {
31             this.name = name;
32         } else {
33             System.out.println("输入名字长度不对,字符范围在2-6个字符,给与默认值八戒");
34             this.name = "八戒";
35         }
36 
37     }
38 
39     public int getAge() {
40         return age;
41     }
42 
43     public void setAge(int age) {
44         //判断
45         if (age < 120 && age > 0) {
46             this.age = age;
47         } else {
48             System.out.println("你输入的年龄不合理,年龄范围在1-120,给默认年龄18岁");
49             this.age = 18;
50         }
51     }
52     public double getSal() {
53             return sal;
54     }
55 
56     public void setSal(double sal) {
57         if (sal > 0 && sal < 30000) {
58             this.sal = sal;
59         } else {
60             System.out.println("你输入的金额已超额,给与默认值20");
61             this.sal = 20;
62         }
63     }
64 
65     //写一个方法,返回相应的信息
66     public String Info() {
67         return "名字name=" + name + "\t" + "年龄age=" + age + "\t" + "工资sal=" + sal;
68     }
69 }
复制代码

 封装与构造器

在构造器中也需要去防护封装中的属性,可以在构造器中添加set的相关属性。

复制代码
 1 package com.test;
 2 
 3 public class Demo01 {
 4     public static void main(String[] args) {
 5         Person can = new Person();
 6         can.setName("markldsfc");
 7         can.setAge(2 0);
 8         can.setSal(150000);
 9         System.out.println(can.Info());
10         System.out.println(can.getSal());
11         //使用构造器指定属性
12         Person person = new Person("smith",26,5000);
13         System.out.println("===========simth相关信息============");
14         System.out.println(person.Info());
15     }
16 }
17 
18 /*
19 不能随便查看别人的年龄,工资等隐私,并对设置的年龄进行合理的验证,
20 年龄合理设置,否则给默认年龄,必须在1-120,工资不能直接查看,name的长度在2到6的字节之间
21  */
22 class Person {
23 
24     public String name;  //名字公共
25     private int age; //名字私有化,其他类不能访问,需要应set和get
26     private double sal;//工资私有化,其他类不能访问,需要应set和get
27 //添加无参构造
28     public Person() {
29     }
30 //添加构造器
31 public Person(String name, int age, double sal) {
32     this.name = name;
33     this.age = age;
34     this.sal = sal;
35     //在构造器中添加set相关属
36     setName(name);
37     setAge(age);
38     setSal(sal);
39     }
40     //使用Alt+Insert
41     public String getName() {
42         return name;
43     }
44 
45     public void setName(String name) {
46         //对名字长度进行限制
47         if (name.length() >= 2 && name.length() <= 6) {
48             this.name = name;
49         } else {
50             System.out.println("输入名字长度不对,字符范围在2-6个字符,给与默认值八戒");
51             this.name = "八戒";
52         }
53 
54     }
55 
56     public int getAge() {
57         return age;
58     }
59 
60     public void setAge(int age) {
61         //判断
62         if (age < 120 && age > 0) {
63             this.age = age;
64         } else {
65             System.out.println("你输入的年龄不合理,年龄范围在1-120,给默认年龄18岁");
66             this.age = 18;
67         }
68     }
69     public double getSal() {
70             return sal;
71     }
72 
73     public void setSal(double sal) {
74         if (sal > 0 && sal < 30000) {
75             this.sal = sal;
76         } else {
77             System.out.println("你输入的金额已超额,给与默认值20");
78             this.sal = 20;
79         }
80     }
81 
82     //写一个方法,返回相应的信息
83     public String Info() {
84         return "名字name=" + name + "\t" + "年龄age=" + age + "\t" + "工资sal=" + sal;
85     }
86 }
复制代码

 

posted @   捞月亮的渔夫  阅读(365)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
点击右上角即可分享
微信分享提示