访问控制
三、访问控制
1.包的概念
package语句:
定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题,这会给组件复用以及团队间的合作造成很大的麻!
在java语言中,用包(package)的概念来解决命名冲突的问题。在定义一个类的时候,除了定义类的名称,一般还要指定一个包名,定义包名的语法为:package 包名;
import语句:
访问一个类时,需要使用该类的全称,但这样的书写方式过于繁琐;
可以通过import语句对类的全称进行声明。import语句的语法为:import类的全局限定名(即包名+类名);
通过import语句声明了类的全称后,该源文件中就可以直接使用类名来访问了。
2.访问控制修饰符
private修饰的成员变量和方法仅仅只能在本类中调用;
public修饰的成员变量和方法可以在任何地方调用。
public修饰的内容是对外提供可以被调用的功能,需要相对稳定;
private修饰的内容是对内实现的封装,如果公开会增加维护的成本。
protected和默认访问控制
用protected修饰的成员变量和方法可以呗子类及同一个包中的类使用
默认访问控制即不书写任何访问控制符,默认访问控制的成员变量和方法可以被同一个包中的类调用。
访问控制符修饰类:
对于类的修饰可以使用public和默认方式。public修饰的类可以被任何一个类使用;默认访问控制的类只可以被同一个包中的类使用。
protected和private可以用于修饰内部类。
访问控制符修饰成员:

3.static和final关键字
static关键字:
1>static修饰成员变量
用static修饰的成员变量不属于对象的数据结构;
static变量是属于类的变量,通常可以通过类名来引用static成员;
static成员变量和类的信息一起存储在方法区,而不是在堆中,一个类的static成员变量只有“一份”;无论该类创建了多少对象。
2>static修饰方法
通常的方法都会设计到对具体对象的操作,这些方法在调用时,需要隐式的传递对象的引用(this).
static修饰的方法则不需要针对某些对象进行操作,其运行结果仅仅与输入的参数有关,调用时直接用类名引用。
由于static在调用时没有具体的对象,因此在static方法中不能对非static成员(对象成员)进行访问。
3>static块
static块:属于类的代码块,在类加载期间执行的代码块,只执行一次,可以用来在软件中加载静态资源。
final关键字:
1>final修饰变量
final关键字修饰变量,意为不可改变。
final修饰成员变量,两种方式初始化:
-声明同时初始化
-构造函数中初始化
final关键字也可以修饰局部变量,使用之前初始化即可
2>final修饰方法
final关键字修饰的方法不可以被重写。
使一个方法不能被重写的意义在于:防止子类在定义新方法时造成的不经意重写。
3>final修饰类
final关键字修饰的类不可以被继承。
final class Foo{
}
jdk中的一些基础类库被定义为final的,例如:string、Math、Integer、Double等
使一个类不能被继承的意义在于:可以保护类不被继承修改,可以控制滥用继承对系统造成的危害
static final:
1>static final修饰的成员变量称为常量,必须声明同时初始化,不可被改变。
2>static final常量会在编译期被替换

浙公网安备 33010602011771号