目录
目录.png内部类
final关键字
- 修饰属性或者参数时表示指向不可变
- final static 这种编译了就定了的常量
- 方法或类表示不可被继承改变
子类父类执行顺序
- 类中先staic再属性赋值操作(如果有),然后再构造器。有父类先执行父类,再执行子类属性赋值
- java 8中可以加默认方法和静态方法
内部类细节
- 非静态内部类(比如迭代器模式就是这么用的)自动拥有对其外部类所有成员的访问权,当某个外部类的对象创建了一个内部类对象时,此内部类对象必定会秘密地捕获一个指向那个外部类对象的引用。 一般内部类都会有外部类提供一个方法返回内部类。在单个外部类中,可以让多个内部类以不同的方式实现同一个接口,或继承同一个类。当将内部类向上转型为其基类,尤其是转型为一个接口的时候,内部类就有了用武之地。
- 如果定义一个匿名内部类,并且希望它使用一个在其外部定义的对象,那么编译器会要求其参数引用是 final 的,以保证数据一致性。 lambda 表达式来实现闭包行为,也就是内名内部类。
- 将内部类声明为 static,这通常称为嵌套类要创建嵌套类的对象,嵌套类并不需要其外部类的对象。不能从嵌套类的对象中访问非静态的外部类对象。内部类是面向对象的闭包。
- 内部类可以被继承需要构造器特殊语法wi.super(); 覆盖内部类就好像它是外部类的一个方法,其实并不起什么作用
- 局部内部类而不使用匿名内部类的另一个理由就是,需要不止一个该内部类的对象
- 内部类标识LocalInnerClass$LocalCounter.class, 静态内部类适用于包含类当中,但又不依赖与外在的类,不用使用外在类的非静态属性和方法,只是为了方便管理类结构而定义
网友评论