java的重写(override)与重载(overload)

1 方法重写

1.1 方法重写的概念

子类继承了父类,子类就得到了父类的某个方法。但是子类觉得父类的这个方法不好用或者无法满足自己的需求。子类重写一个与父类申明一样的方法来覆盖父类的该方法,子类的这个方法就进行了方法重写。声明不变,重新实现

1.2 方法重写的校验注解:@Override

Java建议在重写的方法上面加上一个@Override注解,@Override优势:可读性好,安全,优雅!!

这个注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。

1.3 方法重写的具体要求

  1. 子类重写方法的名称和形参列表必须与父类被重写方法一样
  2. 子类重写方法的返回值类型申明要么与父类一样,要么比父类方法返回值类型范围更小
  3. 子类重写方法的修饰符权限应该与父类被重写方法的修饰符权限相同或者更大
  4. 子类重写方法申明抛出的异常应该与父类被重写方法申明抛出的异常一样或者范围更小

1.4 方法重写的规范

  • 加上@Override注解。
  • 建议“申明不变,重新实现”

1.5 注意事项

  • 被重写后的方法是无法通过子类对象在外部调用的
  • 可以使用super.方法名()在子类的实例方法中调用父类被重写的方法
  • 静态方法和私有方法不能被重写

2 方法重载

2.1 方法重载的概念

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载

2.2 方法重载的具体要求

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。
上一篇:设计模式(四)行为型模式。


下一篇:Flutter 画圆环。增加定时器让颜色自己动起来