方法重写:
概念:
子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。
方法重写的应用场景:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容
Override注解:
- -@Override:注解,重写注解校验!
- 这是注解标记的方法,就说明这个方法必须是重写父类的方法,否则编译阶段报错。
- 建议重写都加上这个注解,一方面可以提高代码的可读性,一方面可以防止重写出错!
- 子类重写父类方法的时候,
访问权限
需要大于等于父类
重写&重载:
方法重写:子类和父类出现了一摸一样的方法声明(方法名、参数类表、返回值类型)
方法重载:在同一个类中,方法名相同,参数列表不同,与返回值无关
注意:
- 私有方法不能被重写(父类私有成员子类是不能继承的)
- 子类方法访问权限不能更低(public > protected > default > private)
- 父类中的静态方法不能被重写,如果子类也有相同的方法,并不是重写的父类的方法,而是将父类同名的方法隐藏了起来。
private void show() {System.out.println("Fu中show()方法被调用");}void method(int a ) {System.out.println("Fu中method()方法被调用");}static void method2() {System.out.println("Fu中method2()方法被调用");}
}public class Zi extends Fu {// 编译【出错】,子类不能重写父类私有的方法@Overrideprivate void show() {System.out.println("Zi中show()方法被调用");}// 编译【出错】,子类重写父类方法的时候,访问权限需要大于等于父类 @Overrideprivate void method() {System.out.println("Zi中method()方法被调用");}// 编译【通过】,子类重写父类方法的时候,访问权限需要大于等于父类 @Overridepublic void method() {System.out.println("Zi中method()方法被调用");}// 编译【出错】,父类的静态方法不能被重写@Overridestatic public void method2() {System.out.println("Zi中method2()方法被调用");}
}
权限修饰符:
public > protected > default > private