面向对象-4
static修饰符
- 使用该修饰符的成员是属于类的(类名.成员)
- 不适用该修饰符的成员是属于对象(使用时必须new对象)
注:
static 修饰的方法不能使用super和this
super和this是指向对象的
final修饰符
- final修饰的类没有子类是最终类
- final修饰的方法是最终方法,不能呗子类覆盖
- final修饰的变量只能赋值一次,不能重复赋值
- final修饰的可变参数与变量同理提高程序的安全性(数组的元素可以被修改,它类似于方法的的属性)
注:
- 基本数据类型:不能改变值
- 引用数据类型:不能改变引用地址
代码块
使用{}就表示一个代码块,每个花括号有自己的作用域
1. 局部代码
把代码成块
2. 初始化代码块
每次创建对象的时候都会执行
3. 代码块
当该类被加载到JVM中之后,立即执行一次该代码块
class Test{
//初始化代码块
{
System.out.println("初始化");
}
static{
System.out.println("静态代码块");
}
public static void main(String[] args){
//局部代码块
{
int age = 10;
System.out.println(age);
}
}
}
执行顺序:
静态代码块->初始化代码块->构造器->局部代码块
内部类
1. 静态内部类
类里使用static声明的内部类
2. 实例内部类
类里没有使用static声明的内部类
3. 局部内部类
定义在方法中的内部类
4. 匿名内部类
特殊的局部内部类,通常此类只使用一次
//抽象类
class abstract Animal{
public abstract void say();
}
//接口
interface IFly{
public void fly();
}
//实现
public static void main(String[] args){
//抽象类的匿名内部类
new Animal(){
public void say(){
System.out.println("说话");
}
}.say();
//接口的匿名内部类
new IFly(){
public void fly(){
System.out.println("飞");
}
}.fly();
}
枚举
枚举是一个特殊的类,它的实现直接继承了java.lang.Enum类,枚举也是一个特殊的单例设计
枚举的定义规范
public enum 枚举名{
常用类型A,常用类型B,常用类型C;
//属性
//方法
//...
}
用于定义必须选择 的参数
常用方法
方法 | 作用 |
---|---|
public final String name() | 枚举的名称 |
public final int ordinal() | 枚举的序列 |