##类的访问修饰符
public:
默认修饰符:default 什么都不写,只能在本包中访问
###包的命名规范
全部小写,域名倒置,用.分割,前后不能有.
##类成员的访问修饰
private 只能本类中访问
default (什么都不写)可以在同一类,包中访问,子类中不可以
protect 可以在 类 包 子类 中访问
public 都能访问
## static
- 成员变量
静态变量,可以直接通过类名访问 - 成员方法
静态方法,可以直接通过类名访问 - 代码块
静态代码块,当java虚拟机加载时,就会执行改代码块
静态块(静态变量)——>成员变量——>构造方法——>静态方法
##如果类还没有被加载:
Parent obj1 = new Child ();
- 先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关。
- 执行子类的静态代码块和静态变量初始化。
- 执行父类的实例变量初始化
- 执行父类的构造函数
- 执行子类的实例变量初始化
- 执行子类的构造函数
##如果类已经被加载:
则静态代码块和静态变量就不用重复执行,再创建类对象时,只执行与实例相关的变量初始化和构造方法。
###静态常量
静态表示在内存中只有一份拷贝
因为有些属性没有存在多个的必要,修饰伪静态可以减少内存的浪费
###final 常量
共享的内容,是不改变的
final 修饰的常量没办法在本类中直接使用
但是 static final 可以在本类中直接使用
static 方法
- 可以直接通过类名访问(不创建对象也可以) 本类中直接访问
- 静态方法中不能使用this和super(static方法是类级别的,在对象被创建之前就己经存在了,还没有对象,所以不能直接this 这个对象)
- 不能直接访问所属类的实例变量和实例方法(因为实例变量和方法只有在new对象的时候才会存在)
- 可以直接访问类的静态变量和静态方法
- 静态方法必须被实现(即方法体里边必须有东西),不能被实例化
###实例方法
- 通过实例访问、
- 可以直接访问所属类的静态变量、静态方法、实例变量和实例方法
成员变量有两种:实例变量和类变量(也称静态变量,静态域)。
成员方法有三种:实例方法,类方法(也称静态方法),构造方法(无返回值,方法名和类名一致)。