本章我们重点介绍封装~
1.什么是封装
2.了解访问修饰限定符
3.封装的实现
4.如何访问被封装的内容
【引言】
OOP语言中面向对象的3个重要思想:封装 继承 多态
NO1.什么是封装
我们在类和对象系列中重要研究封装的特性
那么什么叫做封装呢:封装就是套壳屏蔽细节
举个例子:你的手机和电脑由许多零件组成,但是你看手机就像一个套子套住了许多东西,跟电脑一样,你看不到主机里的电路板啊,电线啊,各种小零件,没必要看到,所以用一个“套子”把内部细节给屏蔽,你作为使用者,只用明白如何跟软件打交道即可,不必在意硬件到底是什么或者是如何工作的
在代码里也一样,假如你写了一堆代码,你只是为了给别人使用你代码的功能,并不用给别人看到你代码的具体实现,所以采用封装,使得别人看不到具体实现,然后提供给别人接口,让使用者与你提供的公开接口进行交互从而使用你的代码。这就是封装的过程。
NO2.了解访问修饰限定符
在我们具体了解封装之前,先介绍一下所谓的访问修饰限定符
这里有4个访问限定修饰符,分别是对类中的成员变量或者方法进行修饰限定的
其中我们用private来完成封装
被private修饰的只能在同一包中的同一类来使用
public:可以理解为一个人的外貌特征,谁都可以看得到
default: 对于自己家族中(同一个包中)不是什么秘密,对于其他人来说就是隐私了
private:只有自己知道,其他人都不知道
包叫做软件包,用来存类的,就相当于一个类的文件夹,该文件夹可以帮你分配你的类
NO3.封装的实现
首先我们写一个日期类
public class Date {
public int year;
public int month;
public int day;
public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public void printDate(){
System.out.println(year+" "+month+" "+day);
}
public static void main(String[] args) {
Date date = new Date(2020,10,1);
date.printDate();
}
}
我们通过实例化对象赋值,并打印出了成员变量的值
但我们要是想对代码进行封装,可以对成员变量加上private,比如说我们对日期类中的年成员变量加上private来对其进行修饰
那么我们在其他类将不能直接调用year成员变量,程序会报错
被private修饰的变量只能在当前类中直接访问,那么我们如何在其他类里访问这个被private修饰的year变量呢???
NO4.如何访问被封装的内容
我们只需在Date类中提供一个用来交互的公开接口即可
我们提供了一个public公开的setYear接口,用于在其它类中用来设置year的值;其次我们又提供了一个getYear公开接口用来访问year值,因此我们在其它类中可以这样使用接口来赋值和访问
如果我们要将成员变量都进行封装,那就分别设置多个接口
在调用的时候仍然通过接口来赋值和调用
public class Test {
public static void main(String[] args) {
Date date = new Date();
//date.year = 2020;
//date.month = 10;
//date.day = 1;
//用接口来访问year
date.setYear(2020);//通过接口来设置year值
System.out.println(date.getYear());//通过接口来返回year值
date.setMonth(10);
System.out.println(date.getMonth());
date.setDay(1);
System.out.println(date.getDay());
date.printDate();
}
}
注意:一般情况下成员变量设置为private,成员方法设置为public。
本章完~~~



