[04] 包和访问权限修饰符


1、包

在某个类中的最上方,我们总是可以看到以 package 关键字开头的一行代码,这行代码表示了当前类的位置,我们称之为包。
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 返回值;
}


原文地址:https://www.cnblogs.com/deng-cc/p/7459371.html