For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
这种子类包含与父类同名方法的现象被称为方法重写,也被称为方法覆盖。方法的重写要遵循“两同两小一大”规则。
两同 即方法名相同,形参列表相同;
两小 指的是子类方法返回值类型应比父类返回值类型更小或相等,子类方法声明抛出的异常类型应该比父类方法声明抛出的异常类型更小或相等;
一大 指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
尤其需要指出的是,覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法
当子类覆盖了父类方法后,子类的对象将无法访问父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法。如果需要在子类方法中调用父类中被覆盖的方法,则可以使用super(被覆盖的是实例方法)或者父类类名(被覆盖的是类方法)作为调用者来调用父类中被覆盖的方法。
如果父类具有private访问权限,则该方法对其子类是隐藏的,因此其子类无法访问该方法,也就是无法重写该方法。如果子类中定义了一个与父类private方法具有相同的方法名、相同的形参列表、相同的方法返回值类型的方法,依然不是重写,只是在子类中重新定义了一个新方法。
重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类的同名方法之间。它们之间的联系很少,除了二者都是发生在方法之间,并且要求方法名相同之外,没有太大相似之处。当然,父类方法和子类方法之间也可能发生重载,因为子类会获得父类方法。