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 }
想多了都是问题,做多了才是答案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器