1. 封装
封装概念:
将类中重要的数据和方法使用private修饰,使其只能在类内进行访问,
而类的调用者则无法对类中私有数据进行访问。
封装的本质是为了对调用者透明化,隐藏对象的属性和实现细节,仅对外提供公共访问方式。
栗子:
1、你藏了私房钱,存到沙发下,没让你媳妇儿知道。
(此时你具备了消费能力)
2、你媳妇儿想吃火锅,你用提前在沙发下拿的500块付款。
你媳妇儿知道你有消费能力 -》 (对外接口)
你媳妇儿没法直接用你的钱 —》 (私有 )
你媳妇儿不知道你钱放在哪,也无法把钱拿走,但能让你结账 -》(透明化)
1.2 封装作用
保护或者防止数据被破坏。
别人不能够通过 变量名.属性名 的方式来修改某个私有的成员属性
操作简单
封装后,多个调用者在使用的时候,只需调用对外接口即可
透明化
实现过程对调用者是不可见的,调用者无需知道其内部实现
1.3 访问权限控制
private/public 关键字表示 “访问权限控制”
被 public 修饰的成员变量和方法,可以在类外调用。
被 private 修饰的成员变量和方法,只能在类内部进行使用。
通常使用 private封装属性,在必要的时候使用public 对外提供方法
包(package)中详述
1.4 getter 和 setter方法
如果需要对外提供 private属性的修改和获取,
就需要使用 getter 和 setter方法了。
即常说的 set/get方法。
具体是否提供视情况而定。
IDEA快捷键: alt + insert (或 alt + F12)
2. 包
包(package)是组织类的一种方式。
包主要保证类在全局中的唯一性。
类似于C++ 中的namespace 命名空间
包分为 系统包和类 , 以及 自定义包和类
2.1 系统包
Java中提供了很多现成的类(下去了解)
如常用的时间戳 java.util 包中的 Date类,
我们在使用 import导入包的时候建议显示指定要导入的类名。
impoort 类似于 C++ 中的 using namespace , 而不是 #include ,
因为java中不需要 引入其他文件。
2.2 自定义包
规则:
1、在文件上方加上一个 package 语句指定该代码属于哪个包。
2、包名尽量唯一,采用域名颠倒 (如: com.baidu.demo)
3、包名和路径匹配。
例如com.baidu.demo 则会生成对应com/baidu/demo 存储代码
4、一个类没有package,则放在默认包中
2.3 包的访问控制
public:
公共的,被其修饰的类、属性以及方法
不仅可以跨类访问,而且允许跨包(package)访问。
private:
私有的,被其修饰的类、属性以及方法
只能在类内访问,其子类不能访问,更不能允许跨包访问。
protect:
介于public 和 private 之间的一种访问修饰符,“保护形”。
被其修饰的类、属性以及方法
只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default:
即不加任何访问修饰符,通常称为“默认访问模式“。
该模式下,只允许在同一个包中进行访问。