方法重写
方法重写
概念
方法的重写或方法的覆盖(overriding)
-
子类根据需求对从父类继承的方法进行重新编写
-
重写时,可以用super.方法的方式来保留父类的方法
-
构造方法不能被重写
方法重写规则
重写方法和被重写方法必须具有相同的方法名
-
重写方法和被重写方法必须具有相同的参数列表
-
重写方法的返回值类型必须和被重写方法的返回值类型相同或者是其子类
-
重写方法不能缩小被重写方法的访问权限。
实例
A类:
public class A extends B{
@Override //重写
public void test() {
super.test(); // 默认调用父类的方法
System.out.println("222");
}
}
B类:
public class B {
public void test(){
System.out.println("B>=test()");
}
}
main方法:
A a = new A();
a.test();
//父类的引用指向了子类。
B b =new A(); //子类重写了父类的方法
b.test();
//输出结果为B>=test() 222 B>=test() 222
方法重载和重写的区别
区别 | 方法重写 | 方法重载 |
---|---|---|
方法关系 | 描述的是父类和子类的方法关系 | 描述的是同一个类中多个同名方法的方法关系 |
Override 关键字 | 需要使用 @Override 关键字修饰 | 不需要 |
参数类型和参数个数 | 不能修改 | 必须修改 |
返回类型 | 只能变小或相同,不能变大 | 可修改 |
抛出异常 | 只能变小或删除,不能抛出新的或者更大的异常 | 可修改 |
权限控制符 | 只能变大,不能变小 | 可修改 |