您的位置 首页 java

5分钟课堂:Java的方法覆盖

Java 中,子类可继承父类的方法,但有时子类可以采用方法覆盖来修改继承的方法的实现。方法覆盖(Overriding)是在子类重新定义了父类的方法,也称方法重写。

覆盖方法具有与其被覆盖的方法相同的名称、参数列表(参数顺序和数量)和返回类型。子类中定义的覆盖方法也可以返回被覆盖方法类型的子类型。

需要注意,覆盖方法的访问权限不允许缩小;被覆盖的方法不能是final方法,也不能为 static 方法;覆盖方法也不能比原方法抛出更多的异常。

覆盖方法时,可以使用@Override注解,指示编译器该方法是覆盖父类中的方法。如果编译器检测到该方法在父类中不存在,将产生编译错误。

覆盖不会删除父类中的方法,子类中覆盖方法可以使用super来访问父类中被覆盖的方法。

在下面代码中,子类方法Manager中定义的getDetails()方法的签名(方法名、参数列表及返回类型)和父类完全相同,因此,覆盖了父类的getDetails()方法。

 class Employee {
protected String name;
protected double salary;

public String getDetails() {
return "Name:" + name + "\n" + "Salary:" + salary;
}
}

public class Manager extends Employee {
protected String department;

@Override
public String getDetails() {
return super.getDetails() + "Manager of : " + department;
}
}  

方法覆盖和方法 重载 存在以下几点不同:

(1) 覆盖方法参数列表必须相同,重载方法参数列表必须不相同;

(2) 覆盖返回类型要一致,重载没有要求;

(3) 覆盖用于子类覆盖父类的方法,重载可以在同一个类中,也可以在子类中使用;

(4) 一个方法只能被子类覆盖一次,但可以被多次重载。

(5) 覆盖对方法的访问权限和抛出的异常有一定的约束,重载则没有限制。

文章来源:智云一二三科技

文章标题:5分钟课堂:Java的方法覆盖

文章地址:https://www.zhihuclub.com/174204.shtml

关于作者: 智云科技

热门文章

网站地图