炫酷技能大揭秘!Java的重载与重写:开启超能编程之路!

124 阅读4分钟

炫酷技能大揭秘!Java的重载与重写:开启超能编程之路!

mp.weixin.qq.com/s?__biz=Mzk… 在这里插入图片描述


  • 欢迎来到代码教父大课堂,今天我们主要来介绍java中的重载和重写,重载重写都是面向对象中的重要概念,今天我们来解开他们的神秘面纱,故事开始,有请小渣渣和小哇哇进场!

概述

小渣渣: 嘿,小哇哇!你知道Java中的重载和重写是什么吗?

小哇哇: 当然啦,小渣渣!重载和重写是Java面向对象编程中非常重要的概念之一。重载指的是在同一个类中,可以有多个方法拥有相同的名称,但参数列表不同。而重写则是在继承关系中,子类可以重新定义父类中的方法。

小渣渣: 哈哈,没错!重载就像是一家饭馆里的多道菜品,虽然名字一样,但是每道菜的配料和味道都可能不一样。

小哇哇: 嗯嗯,说得对!来给你个有趣的案例吧。比如说有一家饭馆,它的厨师会根据不同的口味,为不同的食客做出不同的菜。

public class Chef {
    // 重载的方法
    public void cook(String dish) {
        System.out.println("厨师正在做" + dish);
    }

    // 重载的方法
    public void cook(String dish, int spicyLevel) {
        System.out.println("厨师正在做" + dish + ",辣度:" + spicyLevel);
    }
}

小渣渣:酷!这里的Chef类定义了两个重载的cook方法,一个带有一个参数dish,另一个带有两个参数dish和spicyLevel,辣度可以根据食客的口味来指定。

小哇哇: 没错!现在我们来看看重写的情况。比如说有一个饭馆的老板的口头禅是“欢迎光临!”,而他的儿子接了生意之后,想要把口头禅改成“欢迎光临,亲爱的朋友!“

public class Boss {
    // 父类方法
    public void welcome() {
        System.out.println("<font color=\"#663399\">欢迎光临!</font>");
    }
}

public class Son extends Boss {
    // 重写的方法
    @Override
    public void welcome() {
        System.out.println("<font color=\"#663399\">欢迎光临,亲爱的朋友!</font>");
    }
}

小渣渣:没想到老板的儿子这么有创意!通过将Son类继承自Boss类,并重写欢迎方法,他成功改变了口头禅的内容。

小哇哇: 对啊!这个例子很好地展示了重写的概念,子类可以通过重写父类的方法来实现自己的逻辑。顾名思义就是重新编写原来的代码。Java 中重写的目的是让子类能够重新定义父类中已有的方法,从而实现多态性。通过重写,子类可以根据自己的需求来实现继承自父类的方法,使得代码更加灵活和可复用。同时,重写也可以提高程序的可读性和维护性。但是要注意一点,重写并不代表子类再也无法调用父类中被重写的方法了,子类仍可以通过 super 关键字进行调用。

小渣渣: 哈哈,Java的重载和重写就像是饭馆里的菜品和口头禅一样,充满了变化和趣味性!


使用场景

小渣渣: 那我们什么时候应该使用重载什么时候使用重写呢?

小哇哇: 小渣渣!在实际编程中,我们可以根据需要来选择使用重载或重写。当我们希望在同一个类中有不同参数列表的方法时,可以使用重载。而在子类中有需要修改或重新定义父类方法的行为时,可以使用重写。

小渣渣: 哦!重载主要用于同一个类中,提供更多灵活的方法选择,而重写主要用于继承关系中,允许子类重新定义父类的方法以实现自己特定的行为。这就能更好地满足不同的需求。

小哇哇: 除了这些,他们还有各自的限制规则

重写的规则

小哇哇: 重写的规则:

  • 参数列表不能改变;
  • 返回类型可以为被重写方法的派生类(java5及之前版本完全不能改变);
  • 实现过程可以改变;
  • 异常声明不能比父类更加宽泛;
  • 访问限制不能比父类更加严格;
  • final 修饰的方法不可重写!
  • static 修饰的方法不可重写,但能重新声明!
  • 构造方法不可重写!
  • 父类无法被子类访问的方法不可重写!

小哇哇: 总的来说,重写就是换汤不换药,偷梁换柱,但是外壳没有变,比如充电线知道吧,就是内部的材质发生了变化 在这里插入图片描述===》在这里插入图片描述

重载的规则

小哇哇: 重载的规则

  • 参数列表必须改变;
  • 返回类型可以改变;
  • 实现过程可以改变;
  • 异常声明可以改变;
  • 访问限制可以改变;

小哇哇: 总的来说,重载外壳必须改变,内核可以改变。

在这里插入图片描述===》在这里插入图片描述 小渣渣: 学到了学到了,这下终于弄明白重载和重写了

更多内容,敬请关注公众号“代码教父”

qrcode_for_gh_311cccd7b2f1_258.jpg