子类中出现了父类方法声明一样,也称为方法的覆盖,方法复写。
重写特点:
1-如果方法名不同,直接调用使用
2-如果方法名不同,始终调用子类方法。
方法重写的应用:
当子类既需要父类的功能,又需要有新的功能时,可以重写父类的方法,这样既沿袭了父类的方法,又定义了自己特有的方法。
案例:
父类Phone:
package day08;
public class Phone {
public void call(){
System.out.println("打电话!");
}
}
子类NewPhone类:
package day08;输出:
public class NewPhone extends Phone {
public void call(){
super.call();//调用父类的call方法
System.out.println("看地图!");//拓展的功能,展示了新手机继承父类的方法既可以打电话又拓展了自己的看地图功能
}
public static void main(String[] args) {
//创建对象
NewPhone np = new NewPhone();
np.call();
}
}
打电话!
看地图!
方法重写注意事项:
1-父类中私有方法不能被重写!以为父类私有方法根本就无权限访问,所以就没重写之说。
2-子类重写父类方法不能以更低访问权限修饰。(最好声明一致)
3-父类静态方法,子类必须静态方法(严格上说这不是重写,是一种机制罢了)
方法重写和方法重载区别:
方法重载:
本类中出现的方法名一样,参数列表(参数类型和个数)不同,可以改变返回值类型,与返回值无关。
方法重写:
子类中出现了父类方法声明一样,也称为方法的覆盖,方法复写,返回值类型不能修改。