Java-overload重载和override重写

本文详细解析了方法重载(overload)与重写(override)的区别与联系。重载指同一类中方法名相同,参数列表不同的情况;而重写发生在子类继承父类,方法名、参数列表及返回类型完全一致的情况下,但方法实现可以不同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重载(overload)

  • 在同一个类中,方法名相同,参数列表不同(参数个数,参数顺序,参数类型)

  • 仅仅返回类型不同不足以称为方法的重载(重载与方法返回类型无关)

  • 仅仅参数变量名称不同是不可以的

public class OverloadDemo {
    /**
     * 方法的重载 overload
     *
     * 方法名相同,参数列表不同(参数个数不同,参数类型不同,参数顺序不同)
     * 注意:与方法返回类型无关,与修饰符无关
     */

    public int sum(int a, int b){
        return a + b;
    }
    // 方法名相同,参数类型不同,构成重载,与返回值类型无关
    public float sum(float a, float b){
        return (int)(a + b);
    }
    // 方法名相同,参数数量不同,构成重载,与返回值类型无关
    public int sum(int a, int b, int c){
        return a + b + c;
    }

    public void print(String str, int year){
        System.out.println("先是String,后是Integer");
    }
    // 方法名相同,参数顺序不同,构成重载,与返回值类型无关
    public void print(int year, String str){
        System.out.println("先是Integer,后是String");
    }
}

重写(override)

  • 子类继承父类,方法名相同,参数列表相同,权限修饰符作用范围要大于父类的范围

  • 父类用public修饰的方法被重写,子类中方法的修饰符只能是public

  • 静态方法不能被重写

  • final修饰的方法不能被重写

public class OverrideDemo {
    /**
     * 方法的重写 overwrite
     *
     * 重写是 方法名相同,返回值相同,参数列表相同(参数个数相同,参数顺序相同,参数类型相同)
     *       方法的内容不同(方法内部的代码不同,也可以相同)
     */

    class Father{
        public void run(){
            System.out.println("Father run");
        }
        public void eat(){
            System.out.println("Father eat");
        }
    }

    class Son extends Father{
        // 子类Son继承Father,返回类型、参数列表、方法名都和父类相同,重写了方法run()
        public void run(){
            System.out.println("Son run");
        }
        // 子类Son继承Father,返回类型、参数列表、方法名都和父类相同,重写了方法eat()
        public void eat(){
            System.out.println("Son eat");
        }
    }
}
总结

重写和重载不同点:

  • 重写发生必须要有继承关系;重载在同一类中发生。
  • 重写要求子类方法返回类型、方法名、参数列表与父类中方法相同;重写要求方法名、参数列表不同,与返回值无关

重写和重载相同点:

  • 都要求方法名通相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值