Java - 重写和重载的区别

本文详细介绍了Java中的方法重载和重写概念。重载发生在同一类中,允许方法名相同但参数列表不同,编译器通过参数类型匹配选择合适的方法。例如StringBuilder构造器的多种形式即为重载。而重写发生在子类对父类方法的实现,要求方法名、参数列表完全一致,子类返回值类型小于等于父类,访问权限大于等于父类。代码示例中,test类和test1子类的str方法展示了重写。
摘要由CSDN通过智能技术生成

重载就是同样的一个方法根据不同的数据输入,做出不同的逻辑处理;

重写就是子类继承相同的父类方法,在数据输入一样的情况下做出区别于父类的响应,这样就需要重写;

1.重载:发生在同一个类中,方法名称必须相同,参数类型可以不同、数量可以不同、顺序可以不通过,返回值和访问修饰符可以不同;

举一个实际允许重载的代码例子:

StringBuilder 有多个构造器方法,可以构造一个空的StringBuilder

StringBuilder str = new StringBuilder();

    //下面是StringBuilder 父类中的子类的具体实现
    public StringBuilder() {
        super(16);
    }

-------------------------------------------

也可指定一个初始字符串

StringBuilder str1 = new StringBuilder("test");

    ///下面是StringBuilder 父类中的子类的具体实现
    public StringBuilder(String str) {
        super(str.length() + 16);
        append(str);
    }

重载解析:编译器通过各个方法提供的参数类型与特定的调用方式使用的参数类型进行匹配,选择合适的方法,如果编译器找不到合适的方法,就会产生编译错误,因为传递的参数类型不匹配,这个过程叫做重载解析;

总结一下: 同一类中,相同的方法根据不同的参数做不同的逻辑处理;

2.重写:重写过程发生在运行期,子类对父类允许访问的方法的实现过程进行重新编写;

1)返回值类型、方法名称、参数列表一样,子类抛出的异常范围小于父类,访问修饰符范围大于等于父类;

2)如果父类访问修饰符为private、static、protect,则不能被重写,被static修饰的可以重新声明;

3)构造方法不能被重写;

总结一下:重写就是子类对父类的改造,表明形势不变,内部逻辑可以改变;

代码段:

public class test {

    public String str(String string){
        return string+"a";
    }
}

class test1 extends test{

    @Override
    public String str(String string){
        return string+"b";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值