从《Java编程思想》提炼访问权限的重要性
问题:谁有权限取用该类
描述:访问修饰词,指明哪些是可用,哪些是不可用
访问控制权限与“最初的实现并不完美”有关
理解:代码是变动的 ,通过访问控制权限,控制仅对外暴露哪些,哪些不对外暴露,不对外暴露的部分,代码修改不会影响其他使用者调用
命名空间:Package
导入命名空间:import
-
作用:引用命名空间
1、全包名,具体引用 2、* 3、使A命名空间的类拥有B命名空间的类的访问权限 4、允许一个项目的类同名,前提是在不同命名空间下 5、直接导入优先级大于*
import com.demo.*; import com.demo.User; import static com.demo.StatisConstants;
权限修饰符
同包名下可访问 | 子类中可访问 | 外部包可访问 | 同类中可访问 | |
---|---|---|---|---|
public | V | V | V | V |
protected | V | V | - | V |
default/friendly | V | - | - | V |
private | - | - | - | V |
- 可以理解为public所有人可见的外貌,protected是可以继承的财产,只有后代可以看见,private是私人生活,仅自己可见
- 访问权限为类群聚在一个包中提供了意义和理由,在便于组织的同时,也限制了访问权利
隔离谁
-
类 Class
- Java源文件可以被称为编译单元,以.java结尾,而一个编译单元有且仅有一个public class,可以有任意个非public class。
package com.demo; public class User {} class User2{} class User3{}
- 如果class只能被public/default修饰,如果被default修饰,只能被同包名下的其他类引用,否则无法引用
-
方法 Method
private void fuction1(){}; protected void fuction2(){}; public void fuction3(){};
-
域成员 Variable
private String privateVariable; protected String canExtendVariable; public String publicVariable;