方法重载:
重载方法必须满足以下特点:
- 方法名相同,返回类型可以不同
- 方法的参数类型、个数、顺序至少有一项不相同
方法覆盖:
覆盖方法必须满足多种约束:
- 子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致。
- 子类方法不能缩小父类方法的访问级别。
- 子类方法不能抛出比父类方法更多的异常,子类抛出的异常必须和父类方法抛出的异常相同,或者子类方法抛出的异常类是父类方法抛出的异常类的子类。
方法覆盖与重载的异同:
假定有一个方法名为method。方法重载是指在同一个类中,对method方法提供了多种实现方式;方法覆盖是指子类采用与父类不同的实现方式,重新实现method方法。
方法覆盖和方法重载的相同之处是都要求方法同名。方法覆盖和方法重载具有以下不同之处:
- 方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致。
- 方法覆盖要求返回类型必须一致,而方法重载对此不做限制。
- 方法覆盖对方法的访问级别和抛出异常有特殊要求,而方法重载在这方面没有任何限制。
多态:
多态使我们能够以一致的方式调用一个大的类别下多种具体类型的对象,甚至这种具体类型可以是未知的将来才开发实现的。正是这种机制,为JAVAEE中重要的容器 构建模型提供了基础;简单地说,你可以先用父类写好调用代码,然后等将来再继承父类“插入”新实现的具体的子类。程序执行时,则可由现在写的调用代码中进入将来写的子类代码中。
多态中的JAVA虚拟机的绑定机制:
- 对于一个引用类型的变量,编译器按照它申明的类型处理。
- 对于一个引用类型的变量,运行时JAVA虚拟机按照它实际引用的对象处理。
- 在运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,JAVA虚拟机采用以下绑定规则:实例方法与引用变量实际引用的对象的方法绑定;静态方法与引用变量所申明的类型的方法绑定;成员变量(包括静态变量和实例变量)与引用变量所申明的类型的成员变量绑定。