权限修饰符

权限修饰符可以用来修饰,类本身,和类中的成员(程序块除外)
权限修饰符用来修饰类的时候只有两个可用(public和默认不写)

  1. public 公共的 本类都能访问 同包都能访问 子类都能访问 (当前项目中任意类位置只有有对象都可以访问)
  2. protected 受保护的 本类都能访问 同包都能访问 子类都能访问(通过子类对象在子类的范围内部访问)
  3. 默认不写 默认的 本类都能访问 同包都能访问
  4. private 私有的 本类都能访问 同包不能访问

特征修饰符

  1. final 最终的 不可更改的
  2. static 静态的
  3. abstract 抽象的
  4. native 本地的
  5. transient 瞬时的—-》序列化
  6. synchronized 同步的
  7. volatile 不稳定的

final

可以修饰:

  1. 变量
    1. 注意基本数据类型和引用数据类型
  2. 方法
    1. 方法是最终的 不可更改
    2. 子类继承父类的方法 将父类的方法重写
    3. final修饰的方法 要求不可以被子类重写
  3. 属性
    1. 存储在堆内存的对象空间内的一个空间
    2. 属性如果没有赋值 有默认值存在
    3. 属性用final修饰后,必须给属性赋初始值 否则编译报错
  4. 类本身
    1. 类是最终的 不可更改的
    2. fianl修饰后(太监类)此类不可以被其他类继承
  5. 如果修饰变量一开始没有个初始值,就可以给变量一次机会,赋值一次,赋值之后无法改变
  1. public class Test(){
  2. public static void main(String[] args){
  3. final int x;
  4. x = 1; // 可以
  5. //=============================
  6. final int y = 1;
  7. y = 10; // 不可以
  8. //==========================-===
  9. final int[] x = new int[]{1,2,4};
  10. x[0] = 10; //可以
  11. x = new int[5]; //不可以
  12. //==============================
  13. }
  14. //==============================
  15. public void testNumber(final int a){
  16. a = 100; //不可以
  17. }
  18. }

static

  1. 修饰属性
  2. 修饰方法
  3. 修饰块
  4. 修饰类(内部类)
  5. 特点:
    1. 静态元素在类加载时就初始化,创建非常早,此时没有创建对象
    2. 静态元素存在静态元素区中,每一个类有一个自己的区域,与别的类不冲突
    3. 静态元素只加载一次,全部类对象及本身共享
    4. 由于静态元素区加载的时候,有可能没有创建对象,可以通过类名字直接访问
    5. 可以理解为静态元素不属于任何一个对象,属于类的
    6. 静态元素,垃圾回收器无法管理,可以粗暴的认为时常驻内存
    7. 非静态成员可以访问静态成员
    8. 静态成员中可以访问静态成员
    9. 静态成员不可以访问非静态成员
    10. 静态元素中不可以出现this和super关键字

abstract

很不具体的 只是个概念

  1. 可以修饰方法和类

    1. 方法:用abstract修饰符修饰的方法 只有方法的结构 没有方法的执行体叫做抽象方法,注意用native修饰的方法虽然也没有方法体但不是抽象方法,只是执行的过程调用的其他语言,看不见
    2. 类:
      1. 用abstract修饰的类,叫做抽查类
      2. 抽象类中不一定有抽象方法
      3. 抽象类中允许有抽象方法,其他的跟普通一样(块,属性,方法,构造方法)
      4. 抽象类不能创建对象(new)
      5. 抽象类——可以单继承——抽象类
      6. 抽象类——可以单继承——具体类(通常不会这么写)
      7. 具体类——不可以单继承——抽象类 (需要子类将父类的方法具体化,或者子类也变成抽象类)

        接口interface

        接口可以理解为抽象类抽象到极致 可以interface修饰
  2. 属性:不能含有一般属性 只能含有公有的静态的常量 public static final

  3. 方法: 不能含有一般的方法 只能含有公有的抽象方法
  4. 块: 不能含有程序块
  5. 构造方法: 不能含有构造方法
  6. 只能通过子类多实现类做事