1.多态
绑定:将一个方法调用同一个方法主体连接到一起就称为“绑定(Binding)。
早期绑定:程序运行以前执行绑定
后期绑定、运行期绑定:绑定在运行期间进行,以对象的类型为基础。Java中绑定的所有方法都采用后期绑定技术。除被修饰为final,声明final告诉编译器不需要进行动态绑定,生成更高效率的代码。
2.过载和覆盖
覆盖:只有一种含义,只是原先的含义完全被后来的含义取代
过载:同一样东西在不同的地方具有多种含义
3.抽象
抽象类:包含了抽象方法的一个类。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。否则,编译器会向我们报告一条出错消息。
4.接口 interface
1.接口的基本数据类型,默认为static和final,因此名字大写
2.接口方法默认为public
3.先extends 再 implements
4.只能继承一个方法,可实现多个接口
5.内部类
普通(非内部)类不可设为private或 protected——只允许 public或者defualt。
内部类被设为 private,除了外部类之外,其他任何东西都不能访问它。内部类可以protected
内部类可以访问封装类的成员
内部类意义:
(1) 正如前面展示的那样,我们准备实现某种形式的接口,使自己能创建和返回一个句柄。
(2) 要解决一个复杂的问题,并希望创建一个类,用来辅助自己的程序方案。同时不愿意把它公开。
内部类定义:
(1) 在一个方法内定义的类
(2) 在方法的一个作用域内定义的类
(3) 一个匿名类,用于实现一个接口
(4) 一个匿名类,用于扩展拥有非默认构建器的一个类 super.value() *47
(5) 一个匿名类,用于执行字段初始化 ---要求使用的外部对象为final属性 保证内外部引用不可变
(6) 一个匿名类,通过实例初始化进行构建(匿名内部类不可拥有构造器)
static内部类
引用外部类对象:
内部类:this.对象
外部类:外部类.this.对象
从内部类继承
继承只对内部类进行扩展 InheritInner extends WithInner.Inner
构造器必须采用以下形式:InheritInner(WithInner wi) {wi.super();}
内部类覆盖:
内部类不直接被覆盖,若继承的内部类同样继承内部类,则可覆盖。
初始化过程:内部类--》外部类--》继承内部类(会再一次调用继承类)--》继承外部类
内部类标识符:
内部类也生成相应的.class 文件,例如 WithInner$Inner.class
为什么要用内部类:控制框架:
6.构造器调用顺序
(1) 调用基础类构建器。这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个衍生类,等等。直到抵达最深一层的衍生类。
(2) 按声明顺序调用成员初始化模块。
(3) 调用衍生构造器的主体。
7.构建器内部的多形性方法的行为
构造器中调用继承的方法,继承方法中调用继承类中的变量,则代码存在问题。
8.下溯造型与运行期类型标识
下溯造型:分级结构中向下移动
运行期类型标识(RTTI):运行期间对类型进行检查的行为