面向对象--类的修饰符
1.权限修饰符
public protected 默认不写 private
权限修符 | 使用范围 |
---|---|
public | 本类,同包,子类 都可以访问 |
protected | 本类,同包 子类(通过子类对象在子类范围内部可以访问) |
默认不写 | 本类 同包 |
private | 只有本类 |
2.特征修饰符
2.1 final
- 最终的 不可更改的
- 修饰变量:
- 如果变量没有赋值 就给一次机会赋值
- 如果变量有值则变量得值不准改变(如果存放的是引用类型,则地址引用不可以改变)
- 修饰属性:修饰属性必须赋初始值,否则编译报错
- 修饰方法:方法是最终的不可更改的,方法不能被子类重写
- 修饰类:类是最终的不可以被继承(常见的工具类都是final的)
2.2 static
- 静态的:静态元素在静态元素区存储,在类加载时的同时加载
- 静态元素存储在静态元素区,只存在一份为类的对象共享,可以是使用 类名去访问
- 静态成员中可以访问静态成员 不可以访问非静态成员,不可以出现this super
- 实例变量可以访问 静态成员,实例变量
- 静态元素区无法被GC回收
2.3 abstract
- 抽象
1.3 类的加载机制
- 加载类模板(属性 方法 块 构造方法) 静态空间(静态属性 静态方法 静态块 静态块默认输出)
- 加载父类
- 父类会产生自己的静态空间(类变量 类方法 静态块 自动执行静态块)执行静态块
- 加载子类
- 字类会产生自己的静态空间 类变量 类方法 静态块 自动执行静态块)执行静态块
- 开辟对象空间
//(supper 会默认调用父类的无参数构造方法) - 加载父类的非静态成员 (属性 方法 块 构造方法 )
- 默认执行代码块
- 加载字类的非静态成员 (属性 方法 块 构造方法 )
- 执行子代码块,执行子类构造方法
- 将对象空间的地址引用交给 栈中的变量存储
1.3 抽象 abstract(描述事物)
- 修饰方法:只有方法结构,没有方法体
- 修饰类:抽象类 不一定含有抽象方法 普通类不能存放抽象方法(只比普通类多了可以含有抽象方法) 不能直接创建对象
1.4 接口interface(定义规则)
- 属性:只能说公有静态常量public static final
- 方法:只能含有公有抽象方法
- implements是实现
接口不能继承别的类;抽象类可以直接多实现接口,具体类必须将接口中的方法实现 ;接口与接口可以多实现