文章目录
一、什么是封装
把属性和方法的获取和设置进行限制
二、为什么要封装
防止用户不合实际的输入,让程序更符合实际
比如:
让用户输入年龄,如果不对用户进行限制,那么用户可以输入-10这样的不符合实际的数,所以要对用户的输入进行限制
一方面提高了数据的安全性,另一方面也让程序更贴合实际,避免用户的不合法输入
三、封装的步骤
1、private 修饰
2、getter和setter设置
3、在setter方法里面进行限制
四、封装涉及的内容
1、this关键字
1.1 是什么
表示当前的,用来修饰属性、方法、构造方法(放首行)
1.2 什么时候用
和封装一起搭配用
要调用当前的属性、方法和构造方法的时候用
1.3 怎么用
//调用属性
this.属性名
//调用方法
this.方法名
//调用构造方法
this();
注:
①调用构造方法必须放在第一行
②this不能和static联用
2、static关键字
2.1 含义
静态的
共享的
2.2 特点
随着类的加载和加载
修饰的属性和方法的执行优先级高于其他普通方法和属性
static修饰的属性和方法属于类的
2.3 为什么要有static
节省内存空间,把同样的东西拿出来放在一个空间里让大家共享
2.4 怎么用
类名.属性名
类名.方法名
修饰属性:静态属性
修饰方法:静态方法
修饰代码块:静态代码块
//静态代码块
static {
//把要共享的东西全部放在这里
//注意不能含有this关键字
}
2.5 什么时候用
需要共享某个属性和方法的时候用
例如:类Student中有个共享属性country
public class Student {
//static的使用
String name;
int age;
static String country;//静态属性
public Student(){}
public Student(String name, int age, String country) {
this.name = name;
this.age = age;
this.country = country;
}
public void show4() {
System.out.println("Student{" +
"name='" + name + '\'' +
", age=" + age +
", country='" + country + '\'' +
'}');
}
}
Test类
public static void main(String[] args) {
Student student1 = new Student("赵丽颖", 30, "中国");
Student student2 = new Student("易烊千玺", 23, "中国");
Student student3= new Student("吴磊", 25, "美国国");
student1.show4();
student2.show4();
student3.show4();
}
运行结果:
之所以country值都一样是因为,创建最后一个对象的时候,给country赋值了美国国。
而前两个对象和最后一个对象指向的country值都一样,是同一个地址空间,所以前两个对象对应的country值也是美国国。
可以借助下面的图理解:
2.6 静态方法VS普通方法
静态方法不能调用普通方法
普通方法可以调用静态方法
(因为前面说过了static修饰的是随着类的加载而加载的,且执行优先级高于其他的普通属性和方法。
所以静态方法调用普通方法的时候,普通方法还没加载,肯定是调用不了的。
而普通方法调用静态方法的时候,静态方法已经被加载了,所以可以调用的)
3、类的默认机制:构造方法
没有写无参构造,创建无参对象则会默认加载一个无参构造方法
如果调用了有参构造,那么不会默认调用一个无参构造