HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
随笔
关于作者
  • 《PureJavaCoderRoad》

    • 导读

    • Java基础

      • Java入门

      • Java语法

      • Java流程控制

      • 面向对象

        • 1、方法
        • 2、静态字段和静态方法
        • 3、继承
        • 4、重载和重写
        • 5、多态
        • 6、抽象类
        • 7、接口
        • 8、值传递和引用传递
        • 9、枚举
        • Head-Java对象的理解
      • 异常处理

    • Java进阶

    • Java高阶

    • 开发辅助工具

    • 计算机网络

    • 数据库

    • JavaEE

    • 中间件

    • 架构

    • 建议

  • PureJavaCoderRoad
  • Java基础
  • 面向对象
#重载和重写
码农阿雨
2022-05-26
目录

4、重载和重写

结合以上两个章节的内容,总结一下重载(overload) 和 重写(override)的区别。

重载和重写都是多态的实现方式。

多态有两种:

  • 编译时多态

    也就是所谓的重载,根据参数,选择执行不同的方法体。

  • 运行时多态

    也就是所谓的重写。

# 重载

eg:

public class Car {
    private String carName;

    public Car(String carName) {
        this.carName = carName;
    }

    public void printCarName() {
        System.out.println("车的名字:" + this.carName);
    }

    protected void printCarName(int carAge) {
        System.out.println("车的名字:" + this.carName + ",车龄:" + carAge);
    }

    protected String printCarName(int carAge, int kilometre) {
        System.out.println("车的名字:" + this.carName + ",车龄:" + carAge + ",公里数:" + kilometre);
        return "";
    }
}

class HaC {
    public static void main(String[] args) {
        Car car = new Car("AE86");
        car.printCarName();
        car.printCarName(3);
        car.printCarName(3, 100000);
    }
}

输出:

车的名字:AE86
车的名字:AE86,车龄:3
车的名字:AE86,车龄:3,公里数:100000

printCarName()就是重载了,有三种不同的参数列表。

重载规则:

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;

无法以返回值类型作为重载函数的区分标准!

# 重写

重写是子类对父类的允许访问的方法的实现过程进行重新编写。

重写必须建立在继承基础上,返回值和形参都不能改变。

eg:

public class Car {
    void drive() {
        System.out.println("开车");
    }
}

class WuLingHongGuang extends Car {
    @Override
    void drive() {
        System.out.println("开五菱宏光");
    }
}

子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

子类可使用super关键字,该关键字引用了当前类的父类。

重写规则:

  • 参数列表与被重写方法的参数列表必须完全相同
  • 子类函数的访问修饰权限不能少于父类,例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected
  • 声明为 final 的方法不能被重写,声明为 static 的方法不能被重写,但是能够被再次声明
  • 构造方法不能被重写
  • 重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。
阅读全文
×

(为防止恶意爬虫)
扫码或搜索:HelloCoder
发送:290992
即可永久解锁本站全部文章

解锁
#重载和重写
上次更新: 2025-02-21 06:04:57
最近更新
01
《LeetCode 101》
02-21
02
IDEA、Golang、Pycharm破解安装
02-21
03
《LeetCode CookBook》
02-21
更多文章>
Theme by Vdoing | Copyright © 2020-2025 码农阿雨
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式