Java Subclass子类:方法重写有哪些规则
在Java中,子类可以继承父类的属性和方法。但是,有时子类需要修改或扩展从父类继承的方法。这就是方法重写(Override)。方法重写允许子类提供一个特定于其自身的实现,同时保持与父类相同的方法签名。以下是Java中方法重写的一些规则:
-
方法签名必须相同:重写的方法必须具有与父类中被重写方法相同的名称、参数类型和参数数量。
-
访问权限不能更严格:子类中重写的方法的访问权限不能比父类中被重写的方法更严格。例如,如果父类方法是public的,那么子类中重写的方法也必须是public的。
-
返回类型必须相同或者是父类方法返回类型的子类型:子类中重写的方法的返回类型必须与父类中被重写方法的返回类型相同,或者是其子类型(协变返回类型)。
-
不能抛出新的或者更宽泛的检查异常:子类中重写的方法不能抛出新的检查异常,也不能抛出比父类中被重写方法更宽泛的检查异常。但是,子类可以抛出更具体的检查异常,或者不抛出任何检查异常。
-
final方法不能被重写:如果父类中的方法被声明为final,那么子类不能重写该方法。
-
static方法不能被重写:静态方法属于类,而不是实例。因此,子类不能重写父类的静态方法。但是,如果子类定义了一个与父类静态方法同名的静态方法,那么这将隐藏(而不是重写)父类的静态方法。
-
构造方法不能被重写:构造方法是用于创建对象实例的特殊方法。子类不能重写父类的构造方法,但可以通过使用super关键字调用父类的构造方法。
遵循这些规则,可以确保在子类中正确地重写父类的方法,从而实现多态和代码的可扩展性。