下面是关于“Java 重写时应当遵守的 11 条规则”的详细讲解攻略。
概述
当我们在Java中使用继承时,重写父类中的方法是常见的操作。但是,如果我们不遵守适当的规则,就会出现问题。这些问题包括出错、程序崩溃以及不正确的行为。为了规避这些问题,以下是重写Java方法时应该遵守的11条规则。
11条规则
1. 参数列表必须完全一致
重写时必须与父类完全匹配的一个要求是参数列表必须相同,包括参数类型和参数顺序。
2. 返回类型必须相同
重写方法的返回类型必须与被重写方法的返回类型完全匹配。但是,可以使用子类对象覆盖原始类型。例如:
public class A {
public Object getSomething() {
return null;
}
}
public class B extends A {
@Override
public String getSomething() {
return "something!";
}
}
3. 访问修饰符不得弱于被重写方法
重写方法的访问修饰符不能比被重写方法的更加严格。例如,如果被重写方法是public,那么重写的方法也必须是public。
4. 实例方法不能重写为静态方法
静态方法不能被重写为实例方法。
5. 静态方法不能被重写为实例方法
实例方法不能被重写为静态方法。
6. final方法不能被重写
final方法不能被重写。
7. private方法不能被重写
private方法不能被重写,因为它们是只能在类内部使用的。
8. 抛出的异常不能超过被重写方法的异常
重写方法不能抛出被重写方法未声明的异常或者超过被重写方法所声明的异常。例如:
public class A {
public void foo() throws IOException {}
}
public class B extends A {
// 这里的异常类型必须是 IOException,而不能是 Exception
@Override
public void foo() throws IOException {}
}
9. 默认访问级别不能降低
进行重写时,访问级别不能降低。例如,如果父类中的方法是default级别,那么子类中该方法也必须是default级别。
10. 函数名、参数顺序、参数类型必须完全一致
在重写方法时,必须确保函数名、参数顺序和参数类型与被重写方法完全相同。
11. 重写的方法不能缩小访问权限
重写的方法不能缩小访问权限。例如,如果被重写的方法是public,那么重写的方法也必须是public。
示例说明
例子1
下面是一个例子,演示了如何遵守Java重写规则:
public class A {
public void doSomething() {}
}
public class B extends A {
@Override
public void doSomething() {}
}
在这个例子中,doSomething方法下的所有重写规则都得到了遵守。
例子2
下面是一个例子,演示了违反Java重写规则的情况:
public class A {
public void doSomething() {}
}
public class B extends A {
// 缺少@Override注解
public void dosomething() {}
}
在这个例子中,因为缺少了@Override注解,所以并没有真正重写doSomething方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 重写时应当遵守的 11 条规则 - Python技术站