权限修饰符
权限修饰符可以用来修饰,类本身,和类中的成员(程序块除外)
权限修饰符用来修饰类的时候只有两个可用(public和默认不写)
- public 公共的 本类都能访问 同包都能访问 子类都能访问 (当前项目中任意类位置只有有对象都可以访问)
- protected 受保护的 本类都能访问 同包都能访问 子类都能访问(通过子类对象在子类的范围内部访问)
- 默认不写 默认的 本类都能访问 同包都能访问
- private 私有的 本类都能访问 同包不能访问
特征修饰符
- final 最终的 不可更改的
- static 静态的
- abstract 抽象的
- native 本地的
- transient 瞬时的—-》序列化
- synchronized 同步的
- volatile 不稳定的
final
可以修饰:
- 变量
- 注意基本数据类型和引用数据类型
- 方法
- 方法是最终的 不可更改
- 子类继承父类的方法 将父类的方法重写
- final修饰的方法 要求不可以被子类重写
- 属性
- 存储在堆内存的对象空间内的一个空间
- 属性如果没有赋值 有默认值存在
- 属性用final修饰后,必须给属性赋初始值 否则编译报错
- 类本身
- 类是最终的 不可更改的
- fianl修饰后(太监类)此类不可以被其他类继承
- 如果修饰变量一开始没有个初始值,就可以给变量一次机会,赋值一次,赋值之后无法改变
public class Test(){
public static void main(String[] args){
final int x;
x = 1; // 可以
//=============================
final int y = 1;
y = 10; // 不可以
//==========================-===
final int[] x = new int[]{1,2,4};
x[0] = 10; //可以
x = new int[5]; //不可以
//==============================
}
//==============================
public void testNumber(final int a){
a = 100; //不可以
}
}
static
- 修饰属性
- 修饰方法
- 修饰块
- 修饰类(内部类)
- 特点:
- 静态元素在类加载时就初始化,创建非常早,此时没有创建对象
- 静态元素存在静态元素区中,每一个类有一个自己的区域,与别的类不冲突
- 静态元素只加载一次,全部类对象及本身共享
- 由于静态元素区加载的时候,有可能没有创建对象,可以通过类名字直接访问
- 可以理解为静态元素不属于任何一个对象,属于类的
- 静态元素,垃圾回收器无法管理,可以粗暴的认为时常驻内存
- 非静态成员可以访问静态成员
- 静态成员中可以访问静态成员
- 静态成员不可以访问非静态成员
- 静态元素中不可以出现this和super关键字
abstract
很不具体的 只是个概念
可以修饰方法和类
属性:不能含有一般属性 只能含有公有的静态的常量 public static final
- 方法: 不能含有一般的方法 只能含有公有的抽象方法
- 块: 不能含有程序块
- 构造方法: 不能含有构造方法
- 只能通过子类多实现类做事