方法的构成:方法名、方法参数、方法返回、抛出异常声明、访问控制修饰符

关于 重写 ,遵循以下的规则:

  • 重写方法必须和被重写方法具有相同的参数列表
  • 重写方法的返回类型必须和被重写方法的返回类型相同或者是返回类型的子类型
  • 重写方法的访问控制修饰符不能比被重写方法更严格(比如一个在父类中声明为 public 的方法重写成一个 protected 的方法)
  • 只有实例方法才能被重写,超类中的 final 方法不能被重写
  • 重写方法不能抛出新的检查异常,或者是抛出比被重写方法声明的检查异常更广泛的检查异常
  • 注意一种特殊情况:如果超类的方法版本中声明了检查异常,但重写的子类方法中没有声明,这时如果使用多态的方式进行调用,那么编译器认为你调用的是声明了异常的方法
  • 尽管多态是在编译时确定对象的类型,但在编译时,还是根据父类的方法声明进行程序检查。因此,如果子类中定义的方法,在父类中没有定义,则会出项编译错误

Java 的 重载 机制:按照范围,可以将重载分为在一个类中重载,和在子类和父类中重载。现分别解释如下:

  • 在一个类中定义多个具有相同签名的方法,这些方法必须具有不同的参数列表,比如一个类的构造函数
  • 在父类和子类中,子类由于继承而拥有了父类的某些方法,此时在子类再定义具有相同签名的方法(必须具有不同的参数列表),这个地方很容易和重写相混淆,因此千万注意

重载的规则:

  • 方法的参数列表必须改变,包括参数的类型,参数的个数多少,参数顺序
  • 重载对返回类型,访问修饰符,异常声明没有任何限制,可以作任意的修改。实质上,重载只是创建了一个方法而已,特殊的地方在于方法的名字