方法重写的概念
* **在子类中**,出现了和父类方法声明完全一样的方法(方法返回值类型一样,方法名一样,参数列表一样)。
方法重载: 在本类中出现的方法名一样,参数列表不同的方法。与返回值无关。
方法重写的格式
* 除方法体以为,其他和父类方法声明一样。
子类对象调用方法的时候:
先找子类本身,再找父类。
什么时候使用方法重写?
* 父类中的方法不能满足子类的需求时,就可以重写父类中的方法,子类自己实现该方法。
方法重写的应用:
当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法。 这样,即沿袭了父类的功能,又定义了子类特有的内容。
方法重写的注意事项
* 子类重写父类的方法之后,调用方法不再调用父类中方法,而是调用子类重写后的方法。 * 子类重写父类方法时使用的权限修饰符要大于等于父类方法中使用的权限修饰符 * public > protected > 默认权限 > private
* 如果父类的方法使用private修饰了,则子类不能重写该方法,即使子类有方法声明一样的方法也不属于重 写,属于子类重新定义了一个方法。
因为父类私有方法子类根本就无法继承
@Override注解作用
用来修饰方法声明的,告诉编译器该方法是重写父类中的方法,如果父类中没有该方法 ,则直接编译失败。
不管是否使用该注解修饰方法声明,只要该方法声明和父类方法声明一致就属于重写。
/** * 手机类 * */ public class Phone { /** * 打电话 */ public void call() { System.out.println("打电话"); } /** * 发短信 */ public void sendMessage() { System.out.println("发短信"); } } /** * IPhone手机类:继承Phone类 */ public class IPhone extends Phone { //重写打电话方法 public void call() { System.out.println("显示头像"); System.out.println("显示归属地"); System.out.println("打电话"); } } /* * 方法重写测试类 */ public class Demo01 { public static void main(String[] args) { // 创建手机对象 Phone p = new Phone(); p.call(); p.sendMessage(); System.out.println("------------"); // 创建Iphone手机对象 IPhone ip = new IPhone(); ip.call(); ip.sendMessage(); } }