[04] 包和访问权限修饰符
1、包
在某个类中的最上方,我们总是可以看到以 package 关键字开头的一行代码,这行代码表示了当前类的位置,我们称之为包。
package com.learn.pay.service;
1
1
package com.learn.pay.service;
包实际上是:
- 物理上是文件夹
- 逻辑上是有相互关系的类的集合
物理上是文件夹,是说假如你的包名是 “com.learn.java.Person”,那么实际上Person这个java文件在项目文件夹下的 “com / learn / java /” 文件夹中。
而逻辑上相关联的类的集合,这个并不是强制性的,而是一种约定俗成,比如把支付相关功能的类放在一个包下,消息发送功能的类放在另一个包下,便于归类和使用。就像你家中各类衣物小到袜子大到铺盖卷儿如果全部揉了丢一块,等你想用的时候去找,就发现麻烦大了。
那么包的主要作用是:
- 避免类重名
- 控制访问权限
就和我们使用windows时,在某个文件夹内不能出现两个同名文件类似,不同的包也可以防止类名的重复,也就便于不同程序员之间工作,即便出现同名类也不影响。如果我需要引用的那个类和我包中的类重名怎么办?答案是带上包名,使用类似 “com.learn.java.Person” 来表示一个Person。
而当我们在某个类中要使用到其他位置的类时,我们需要使用 import 关键字进行引用,而引用不是随意的,就像你可以选择你自己是否去公园,能不能进去就是另一回事了(比如没到开放时间,或者发生自然事故等等)。
你要引用其他类,能否成功引用关键在于引用类的是否给你权限,也就是所谓的权限修饰符来控制(默认类是public权限,即没有限制随便引用)。
2、访问权限修饰符
我们在类,以及方法的定义时,都会使用到权限访问修饰符,对类来说,只有两种,对属性和方法来说,有四种:
权限访问修饰符 | 定义 | 权限 | 针对范围 |
public | 公共权限 | 可以被任意类访问 | 属性、方法、类 |
protected | 受保护的权限 | 同包类可以访问,或者非同包的该类子类可访问 | 属性、方法 |
default(即默认不写) | 同包权限 | 只能被同包的类访问 | 属性、方法、类 |
private | 私有权限 | 只能在本类中访问使用 | 属性、方法 |
- 类:public、default
- 属性、方法:public、protected、default、private
权限修饰符的使用位置为:
//对类来说
【访问权限修饰符】【修饰符】class 类名 {
类体
}
//对属性来说
【访问权限修饰符】【修饰符】数据类型 属性名【=初值】;
//对方法来说
【访问权限修饰符】【修饰符】返回值数据类型 方法名(形式参数列表) {
执行语句;
return 返回值;
}
x
1
//对类来说
2
【访问权限修饰符】【修饰符】class 类名 {
3
类体
4
}
5
6
//对属性来说
7
【访问权限修饰符】【修饰符】数据类型 属性名【=初值】;
8
9
//对方法来说
10
【访问权限修饰符】【修饰符】返回值数据类型 方法名(形式参数列表) {
11
执行语句;
12
return 返回值;
13
}