一、静态变量与静态方法
static静态变量(类成员)
①它属于整个类所有,而不是某个对象所有,被类的所有对象所共享。
②静态成员可使用类名直接访问,也可以使用对象名进行访问。
③静态成员属于整个类,当系统第一次使用该类时,就会为其分配内存空间直到该类被卸载才会进行资源回收。
static静态方法(类方法)
①静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。
②如果系统在静态方法中调用非静态变量,可通过创建类的对象,然后通过对象来访问非静态变量。
③在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
④静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。
静态代码块(static block):
(1)一般初始化块
{undefined
xxx = xxx;
}
(2)静态初始化块
static {undefined
xxx = xxx;
}
执行顺序:静态初始化块最先被执行>一般初始化块>构造方法
注:当类被载入时静态代码块被执行,且执行一次,用来进行类属性的初始化
二、封装
(1)概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法类实现对隐藏信息的操作和访问。
(2)实现步骤:
(1)修改属性的可见性,限制访问。(2)设置属性的读取方法。 (3)在读取属性的方法中,添加对属性读取的限制。
(3)优点:
1. 良好的封装能够减少耦合。
2. 类内部的结构可以自由修改。
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。
三、包
定义: 为了避免相同类名称出现而发生覆盖的情况。
格式:java 包路径 类名
常用包:java.lang.*,java.util.*,java.io.*,java.net.*,java.sql.*
声明原则:(1)package语句必须放在源文件开头;(2)一个源文件只能有一个package语句;(3)包名字全部小写,避免与类、接口的名字冲突。
注:*不是java. lang包下,并且不在同一一个包下的时候,需要使用import进行引入.
import格式:import 包名.类名
作用:(1)将相关联的接口和类集合到一块
(2)避免了类型之间命名冲突:包作为一种封装,给类提供多层命名空间。
(3)实现了外界对包的访问控制。
访问修饰符:
修饰符 | 同一个类 | 同一个包 | 子类 | 所有类 |
---|---|---|---|---|
private | * | |||
default | * | * | ||
projected | * | * | * | |
public | * | * | * | * |
访问包中的类:
① 在同一个包中直接用类名来访问,不用指定类所在的包。
② 两个内在不同一个包的情况。
a、在使用类时指定类的路径。
b、用import语句导入该类。