该文章Github地址:https://github.com/AntonyCheng/java-notes
在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn.net/AntonyCheng/article/details/136555245),该模板集成了最常见的开发组件,同时基于修改配置文件实现组件的装载,除了这些,模板中还有非常丰富的整合示例,同时单体架构也非常适合SpringBoot框架入门,如果觉得有意义或者有帮助,欢迎Star & Issues & PR!
上一章:由浅到深认识Java语言(10):面向对象
19.封装(面向对象第一大特性)
概念定义:
问题的出现:封装就是让 Java 中的代码尽量完全还原现实世界,而不会造成与现实世界有冲突,这种冲突往往出现在直接对属性进行赋值的场景,也就是说,如果直接对属性进行赋值,而没有任何的约束条件,那么就很容易造成与现实世界不相符的冲突;
问题的解决:因此,通过封装来对属性赋值,对这一行为添加约束条件。换句话说,把对属性的操作放在一个方法里,那么这个过程就称为封装,此后属性不能直接访问,而必须通过方法来访问,此时就要用到private关键字;
封装的步骤:
- 私有化属性;
- 提供公共的方法来操作私有化属性;
- 在公共的方法里设置约束条件;
示例一:
为了解决用户输入的数字而造成误解,世界上基本没有奇数腿的动物,我们要消除该误解;
Animal 类:
package top.sharehome.BagOne;
public class Animal {
private int legs; // private ==> 私有的
// 再提供一个公共的方法来操作私有的属性 ==> 封装的第一步
public void setLeg(int legs) {
if (legs % 2 != 0) {
System.out.println("赋值失败,世界上没有奇数腿的动物!");
} else {
this.legs = legs;
}
}
// 提供一个公共的方法来获取私有的属性
public int getLeg() {
return this.legs;
}
}
demo 类:
package top.sharehome.BagOne;
public class demo {
public static void main(String[] args) {
Animal a1 = new Animal();
a1.setLeg(5);
System.out.println("这只动物腿的数量是"+a1.getLeg());
}
}
打印效果如下:
示例二:
世界上的人,年龄是有限的,用封装解决如下;
Person 类:
package top.sharehome.BagOne;
public class Person {
private int age;
public void setAge(int age) {
if(age>130||age<0) {
System.out.println("世界上不存在这样的人!");
}else {
this.age = age;
}
}
public int getAge() {
return this.age;
}
}
demo 类:
package top.sharehome.BagOne;
public class demo {
public static void main(String[] args) {
Person p = new Person();
p.setAge(-9);
System.out.println("你的年龄是"+p.getAge());
}
}
打印效果如下:
在实际开发中的封装:
在做具体开发时,设计一个类,类中的属性往往要设置成私有的,并且提供公共的方法来操作属性,在公共的方法里封装具体的约束条件,这些公共的方法就是以后经常会提到的 getter 和 setter,比如:getXXX(){}
setXXX(){}
;可以用快捷键