基本的访问修饰符
名称 | 描述 | 使用范围 |
---|---|---|
default | 在同一包中可见(默认) | 类,接口,变量,方法 |
private | 在同一类中可见(隐私) | 变量,方法 |
public | 对所有类可见(公开) | 类,接口,变量,方法 |
protected | 对所有同一包内类和所有子类可见(保护) | 变量,方法 |
首先类似数据结构,既然定义,那必要被人所用的,定是公开的,要么对所有类完全公开,要么对包内所有类公开。
包内定义类规则
1. 一个包作为一系列类的集合不允许有重名类。
源文件内定义类规则
-
一个源文件内可以有多个非public类但最多只能有一个public类,也就是说一个源文件内允许多个类对包内公开,但只允许一个类完全公开。(这体现java 包这一环设计的作用是提供一系列对外完全公开的类)
不同包中的public同名类的优先级
问题描述
在某个类的所在包内和另一个包内各定义一个同名public类(设为Student),在mian中创建Student类,编译器会创建哪一个类呢?
-
在没有import导入test2包的情况下,默认创建同一包内的类
2.在import精确导入test2包内student的情况下,默认创建test2包内的类
3.在import粗略导入test2包的情况下,默认创建同一包内的类
若需使用想要非默认的类,则可用精确的路径。