Java培训SE基础之方法覆盖(override)

1. 什么是方法覆盖

定义

在子类中可以根据需要对从父类中继承来的方法进行改造,

也称方法的重写、重置。在程序执行时,子类的方法将覆盖父类的方法。

要求:

覆盖方法必须和被重写方法具有相同的方法名称、参数列表和返回值类型。

覆盖方法不能使用比被重写方法更严格的访问权限。

覆盖和被覆盖的方法必须同时为非static的。

子类方法抛出的异常不能大于父类被重写方法的异常

public class Person {

 

       public String name;

       public int age;

       public String getInfo() {

              return “Name: “+ name + “\n” +”age: “+ age;

    }

}

 

public class Student extends Person {

 

       public String school;

       int age;

 

       public String getInfo() {       //重写方法

              return  “Name: “+ name + “\nage: “+ age + “\nschool: “+ school;

       }

 

       public static void main(String args[]){

              Student s1=new Student();

              s1.name=”Bob”;

              s1.age=20;

              s1.school=”school2″;

              System.out.println(s1.getInfo());   //Name:Bob  age:20  school:school2 执行的是子类重写过的方法

       }

}

2.为什么要方法覆盖

有的时候子类继承的父类方法并不能满足子类的需要, 而方法名称又要保持一致, 此时用到方法覆盖.

3. 方法覆盖的特殊性

子类一旦把父类的方法覆盖, 那么在测试类中再无法通过子类对象调用父类的被覆盖方法了, 因为子类已经把父类的方法重写了, 如果有调用父类方法的需求, 只能通过再创建一个父类对象来调用.

4. @Override注解的使用

有的时候, 在子类中写重写方法时, 容易出现一些低级的拼写错误, 或其他错误, 导致方法不能正确覆盖时, 程序的运行就会出乎意外, 所以为了防止这种现象, 在子类的覆盖方法上添加修饰符@Override注解.

注解 : 本质上一种类, 也是一种特殊的注释, 所以一般情况下,  程序不执行注解, 但是会被编译器, 运行时所识别和处理(通过反射的方式).注解也有很多.

@Override注解的作用是告诉编译器, 在编译程序时, 必须先检查此方法是否满足方法覆盖的条件, 如果不满足, 则编译出错, 这样强制程序员通过排查, 提前检查方法覆盖的问题.

public class Student extends Person {

 

       public String school;

       int age;

 

    @Override // 加上注解, 也能提高代码可读性

       public String getInfo() {       //重写方法

              return  “Name: “+ name + “\nage: “+ age + “\nschool: “+ school;

       }

}

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训训课程视频供广大学员下载学习


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
电话:010-56253825
邮箱:info@atguigu.com
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

 深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)