方法的重写
方法重写概述
方法重写
什么时候考虑使用方法重写?
父类中的方法无法满足子类的业务需求,子类有必要对继承过来的方法进行重写。
子类有权利对这个方法进行重新编写,有必要进行“方法的重写”。
什么条件满足的时候构成方法重写?
1.两个类必须要有继承关系。
2.重写之后的方法和之前的方法具有:
|–相同的返回值类型–|
|–相同的方法名–|
|–相同的形式参数列表–|
3.访问权限不能更低,可以更高。
4.重写之后的方法不能比之前的方法抛出更多的异常,可以更少。
重要结论:
当子类对父类继承过来的方法进行“方法重写”之后,
子类对象调用该方法的时候,一定执行重写之后的方法。
注意事项:
(与多态语法有关)
1.方法重写只是针对于方法,和属性无关。
2.私有方法无法重写。
3.构造方法不能被继承,所以构造方法也不能被重写。
4.方法重写只是针对于“实例方法”,“静态方法重写”没有意义。
方法重写的应用
当籽类需要父类的功能,而功能主体子类有自己特有内容时,可以写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。
练习:手机类和新手机类
package cn.tedu;
//手机类
public class Phone {
public void call(String name){
System.out.println("给"+name+"打电话");
}
}
package cn.tedu;
//新手机
public class NewPhone extends Phone {
/* public void call(String name){
System.out.println("开启视频功能");
super.call(name);*/
// @Override
public void call(String name){
System.out.println("开启视频功能");
super.call(name);
}
}
package cn.tedu;
public class PhoneDemo {
public static void main(String[] args) {
//创建对象 调用方法
Phone p=new Phone();
p.call("刘");
System.out.println("--------");
NewPhone np=new NewPhone();
np.call("刘");
}
}
运行结果
@Override
1.是一个注释(注释后面学习会用到)。
2.可以帮助我们监察重写方法的方法声明的正确性。
方法重写注意事项
1.私有方法不能被重写(父类私有成员子类是不能继承的)
2.子类方法访问权限不能更低(public>默认>私有)
package cn.tedu_1;
public class Fu {
private void show(){
System.out.println("Fu中show()方法被调用");
}
public void method(){
System.out.println("Fu中method方法调用");
}
}
package cn.tedu_1;
public class Zi extends Fu{
/*@Override
//私有方法不能被重写(父类私有成员子类是不能继承的)
private void show(){
System.out.println("Zi中show()方法被调用");
}*/
@Override
public void method(){
System.out.println("Zi中method方法调用");
}
/*@Override
//子类方法访问权限不能更低(public>默认>私有)
void method(){
System.out.println("Zi中method方法调用");
}*/
}