教妹学Java(三十一):简单了解 Java 中的方法重写(Overriding)

简介: 教妹学Java(三十一):简单了解 Java 中的方法重写(Overriding)

三妹开学了,学的计算机软件编程。她学校离我家很近,坐公交车也就 10 站路的距离, 每逢周末她都会来找我,让我辅导她学习 Java。作为一名拥有十余年编程经验的程序员,再加上父母给我们的这份血缘关系,我觉得义不容辞。


“二哥,今天我们要学习的内容是‘方法重写(Overriding)’,对吧?”看来三妹已经提前预习了我上次留给她的作业。


“是的,三妹。如果子类具有和父类一样的方法(参数相同、返回类型相同、方法名相同,但方法体可能不同),这被叫做方法重写。 ”我面带着朴实无华的微笑回答着她,“方法重写用于提供其父类已经声明的方法的特殊实现。方法重写是实现多态的基础条件。”


----正儿八经的分割线,正文开始------------


在 Java 中,方法重写需要满足以下三个规则:


重写的方法必须和父类中的方法有着相同的名字;

重写的方法必须和父类中的方法有着相同的参数;

必须是 is-a 的关系(继承关系)。

如果没有方法重写,会有什么问题呢?来看下面这个例子。


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class Bike extends Vehicle {
    public static void main(String[] args) {
        Bike bike = new Bike();
        bike.run();
    }
}
class Vehicle {
    void run() {
        System.out.println("车辆在跑");
    }
}



程序输出结果如下所示:


车辆在跑

1

Bike is-a Vehicle,自行车是一种车,没错。Vehicle 类有一个 run() 的方法,也就是说车辆可以跑,Bike 继承了 Vehicle,也可以跑。但如果 Bike 没有重写 run() 方法的话,自行车就只能是“车辆在跑”,而不是“自行车在跑”,对吧?


如果有了方法重写,一切就好办了。


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class Bike extends Vehicle {
    @Override
    void run() {
        System.out.println("自行车在跑");
    }
    public static void main(String[] args) {
        Bike bike = new Bike();
        bike.run();
    }
}
class Vehicle {
    void run() {
        System.out.println("车辆在跑");
    }
}



程序输出结果如下所示:


自行车在跑

1

Bike 重写了 run() 方法,也就意味着,Bike 可以跑出自己的风格。


注意,静态方法是不能被重写的,我们在学习运行时多态的时候会进一步说明。


“三妹,关于 Java 中的方法重写,我们暂且先学到这里吧。”我揉一揉犯困的双眼,疲惫地给三妹说。


“好的,二哥,我这就去练习去。”三妹似乎意犹未尽,这种学习状态真令我感到开心。


相关文章
|
6月前
|
开发框架 算法 Java
Java方法重写(Override)与重载(Overload)的详细对比
在Java编程中,多态性是面向对象编程的核心概念之一。Java通过两种重要的机制来实现多态:方法重写(Override)和方法重载(Overload)。虽然这两个概念都与方法的不同实现有关,但它们在本质上有很大的区别。本文将详细对比这两种机制,帮助开发者更好地理解和应用它们。
458 5
|
8月前
|
存储 Java 开发者
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
本文详细介绍了 Java 中 `toString()` 方法的重写技巧及其重要
353 10
【潜意识Java】深入详细理解分析Java中的toString()方法重写完整笔记总结,超级详细。
|
Java
Java | 类、实例初始化 、方法重写规则
Java | 类、实例初始化 、方法重写规则
119 0
|
Java 编译器
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
Java面向对象(三)详解: 封装 | 继承 | 方法重写 | 抽象类
193 2
|
Java
Java方法重写
1.什么是方法重写 2.方法重写的规则 3.重写与重载的区别
339 0
|
Java
java面试基础 -- 方法重载 & 方法重写
java面试基础 -- 方法重载 & 方法重写
77 0
|
Java 编译器
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
94 0
|
Java 编译器
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
【Java 方法重写】@Override 注解,一般用法,重写的具体要求
843 0
|
Java
JAVA_equals方法重写
JAVA_equals方法重写
167 0

热门文章

最新文章