成员,静态内部类

186 阅读3分钟

一.成员内部类

成员内部类是定义在外部类的成员位置,没有static修饰

  1. 可以直接访问外部类的所有成员,包含私有的
  2. 可以添加任何访问修饰符,因为成员内部类就是一个成员
  3. 作用域:整个整体,要在外部类的成员方法中创建成员内部类对象,再调用方法
  4. 成员内部类---访问-->外部类成员(比如属性)【访问方式:直接访问】
  5. 外部类---访问--->成员内部类(说明)访问方式:创建对象,再访问
  6. 外部其他类--访问--->成员内部类
  7. 外部类和成员内部类的成员重名时,成员内部类访问时,遵循就近原则。如果硬是想访问外部类,使用(外部类.this.成员)去访问

二.静态内部类

是定义在外部类的成员位置,有static修饰

  1. 可以直接访问外部类的所有静态成员,包含私有的,但不能直接访问非静态成员
  2. 可以添加任何访问修饰符,因为成员内部类就是一个成员
  3. 作用域:整个整体
  4. 静态内部类---访问-->外部类成员(比如静态属性)【访问方式:直接访问所有静态成员】
  5. 外部类---访问--->静态内部类(说明)访问方式:创建对象,再访问
  6. 外部其他类--访问--->静态内部类
  7. 外部类和静态内部类的成员重名时,静态内部类访问时,遵循就近原则。如果硬是想访问外部类,使用(外部类.this.成员)去访问

三.枚举

实现方式

自定义类实现枚举 使用enum关键字实现

自定义类实现

不需要提供setxx方法,因为枚举对象值通常为只读 对枚举对象/属性使用final+static共同修饰,实现底层优化 枚举对象名通常使用全部大写,常量的命名规范 枚举对象根据需要,也可以有多个属性

自定义类特点

  1. 构造器私有化
  2. 本类内部创建一组对象[四个 春夏秋冬]
  3. 对外暴露对象(通过为对象添加 public final static 修饰符)
  4. 可以提供 get 方法,但是不要提供set

enum常用方法

  1. toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息
  2. name:返回当前对象名(常量名),子类中不能重写
  3. ordinarl:返回当前对象的位置号,默认从0开始
  4. values:返回当前枚举中所有的常量
  5. valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常!
  6. compareTo:比较两个枚举常量,比较的就是编号

注意 枚举类和普通类一样,可以实现接口,但不能继承类