方法覆盖(方法重写)
1. 方法的参数签名和返回值类型必须相同,访问控制修饰符可以不同,但是子类方法不能缩小父类方法的访问权限。
2. 子类方法抛出的异常必须和父类方法抛出的异常相同,或者是父类方法抛出的异常类的子类。
3. 父类的静态方法是不能被子类覆盖为非静态方法。
父类的非静态方法不能被子类覆盖为静态方法。
4. 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。区别:运行时,JVM把静态方法和所属的类绑定,而把实例方法和所属的实例绑定。
5. 父类的私有方法不能被覆盖
6. 父类的非抽象方法可以被覆盖为抽象方法
方法重载
1. 在一个类中不允许两个方法名相同,并且参数签名也完全相同的方法。
2. 类的同一种功能,可能有多种实现,到底采用哪种实现方式,取决于调用者给定的参数。
3. 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法。 |