一、面向对象三大特性
目录
一、面向对象三大特性
面向对象程序的三大特性:封装、继承和多态。我们今天讲的是java面向对象三大特性之一——封装。
二、封装的概念
何为封装,为什么我们要封装,我们举一个简单的例子。
我们在使用洗衣机的时候,我们能通过洗衣机的上面有什么功能 ,如图上面的护婴洗、护理洗、强力手洗等功能,这个是生厂商提供给我们完成日常事务的东西,但实际上洗衣机真正工作的确是电路等一系列硬件原件,对于洗衣机的使用者而言,不必关心这些核心内容,比如电路如何排布的,使用者只需要知道如何使用洗衣机和洗衣机有哪些功能,让使用者和洗衣机进行交互。
封装:讲数据和操作数据的方法进行有机结合,隐藏对象的属性和是心啊细节,仅对外公开接口来和对象进行交互。
三、访问限定符
java是通过类和访问权限来实现封装,类可以将数据和封装数据的方法结合在一起,而访问权限用来控制方法或字段是否在类外使用。
访问限定符一共有四个:private、default、protected、public。
private使用范围是只能在同一个包的同一个类中使用。
default(默认限定符,平常可以不写)使用范围是只能在同一个包中使用(可以不同类)。
protected使用范围可以使用不同包,但在不同包中只能在子类使用,而同一个包则可以使用不同类。
public没有限制,可以在同一个包所有类使用,也可以在不同包所有类使用。
NO | 范围 | private | default | protected | public |
1 | 同一个包中同一类 | true | true | true | true |
2 | 同一个包中的不同类 | true | true | true | |
3 | 不同包中的子类 | true | true | ||
4 | 不同包中的非子类 | true |
四、封装扩展之包
1、包的概念
在面向对象体系中,提出了一个软件包的概念,即:为了更好的管理类,将多个类收集放在一起成为一组,成为软件包。有点类似于目录,比如我有俩个目录,一个是关于学习的内容,一个是关于娱乐的内容,那么第一个目录里面存储的就是有关于学习的东西,第二个目录就是存储着有关于娱乐的东西。
而Java也引入了包,包是对类、接口等的封装机制的一种体现,是一种对类或者接口等的很好的组织方式。包还有一个很重要的作用,在一个工程中可以存在同名的类,只需要处于不同包中即可(不用public修饰)
2、怎么导入包中的类
导入包中的类方法有三种,第一种是在上面直接import导热油,第二种是通过实例化的时候导入,第三种则是导入后面是*(代表全部)。
我们先来说第一种,以Date类为例。
第一种是直接通过实例化对象的时候直接导入,可以完成一个导入包的操作。
第二种是直接通过在上面导入
而第三种和第二种导入方式很相似,但也不推荐使用第三种 :
虽然可以导入全部东西,看着很方便,但有一个缺点:
如果出现一个属性是不同包都包含的,那么该导入哪个呢?所以我还是推荐大家更多使用第二中方法。
3、自定义包
自定义包方法:
我们通过src new一个包然后输入名字就可以使用,包也是一个文件夹,也可以在文件夹中新建一个文件夹也是一个包。
导入包之后我们在包里面写项目内容就会自动导入该包。