java中的重载与重写

重载发生在同一类中,方法名相同但参数列表不同,如构造器的多种形式。重写则在父子类间发生,子类保持父类方法名、参数列表不变,但可以改变实现。重载不关注返回类型,而重写返回类型必须相同。重载是编译时多态,重写体现运行时多态。
摘要由CSDN通过智能技术生成

一、重载与重写的概念

重载(Overload):在同一个类中,方法名相同,参数列表不同(参数类型不同、参数个数不同、参数顺序不同)被视为方法的重载(方法的返回类型不作为判定标准)。常见的重载:类的构造器。

举一个简单的例子:

// 带参数的构造器
public Student(String name, int age, String gender)
//参数不同的构造器
public Student(String name)
//无参构造器
public Student()

重写(Override):在父子类中,当子类不想直接继承父类的某个方法时,在不改变父类方法的返回类型、方法名、参数列表的同时,对方法体进行重写,这种行为被视为方法的重写。

举个简单的例子:

class A {
    public int calculate(int a,int b){ // 父类calculate方法用于计算加法
        return a+b;
    }
}

class B extends A{
    public int calculate(int a, int b) { // 子类calculate方法用于计算乘法
        return a*b;
    }
}

关于重写的注意事项

1. 子类不能重写父类访问权限为private的方法。

2. 子类重写的方法的访问权限不能低于父类被重写的方法。

3. 子类重写的方法抛出异常的数量不能多于父类的方法的异常。

4.当返回类型为自定义类型时,子类重写的方法的返回类型不能大于父类的返回类型(里氏代换原则)。

5. 出现多重继承关系的同名方法,调用时采用就近原则(即优先调用子类同名方法)。

二、重载与重写的区别

①重载一般发生在同一个类中,重写一般发生在父子类中。

②重载的参数列表必须不同,重写的参数列表必须相同。

③重载对返回类型不做要求,重写返回类型必须相同并且有额外要求。

④方法的重载为编译时多态,重写为运行时多态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值