修饰符的意义
public :公共的 任何位置都可以使用的
protected : 受保护的 本包内可用 包外有继承关系的子类中也可用
default :默认的 只有本包内可以使用的
private : 私有的 只有本类当中可以使用的
它们都能修饰什么
类成员(属性、方法)
final(最终的)
修饰类:最终类(太监类)
不能派生子类 不能被继承
String类、Math类都是final修饰的
修饰方法:最终方法 不能被覆盖
不在乎多少个类通过继承得到它- 可以继承
只是这个方法都必须是最后的版本了- 不能覆盖
修饰变量:最终变量 一旦赋值就再也不能修改
●基本数据类型 值不能修改
●b引用数据类型 是指向的地址不能修改了
static(静态的)
修饰属性:静态属性
在内存当中只有一份值,不依赖任何一个对象存在 是整个这个类共享的同一份
访问静态属性 可以不通过对象访问,直接使用类名访问
●静态属性与对象无关,本身在类被加载的时候初始化
修饰方法:静态方法
静态方法不需要对象就可以调用,可以直接使用类名调用(非静态的方法必须使用对象调用)
●为什么不把所有方法都定义成静态的呢?
1、静态方法不能直接访问非静态属性(可以直接访问静态属性)
2、静态方法的调用是通过类名调用的,也就是说很可能没有对象就调用方法了,违背java万事皆对象的设计理念
修饰代码块:静态初始化块
普通的初始化块 用于初始化非静态的属性,每创建一个对象执行一次
静态初始化块 用于初始化静态属性(静态属性只有一份)
●静态初始化块在类第一次被加载的时候执行且只执行一次 跟创建几个对象没有关系