java中重载和重写的区别

几个重要选项的比较 : 

选项

重写重载
方法名必须相同必须相同
方法返回值必须相同(类型相同)可以不同
参数必须相同必须修改
方法修饰符可以修改可以修改
方法抛出的异常可以修改可以修改

详细说明 : 

重载: 发生在同一个类里面

方法的重载,要求方法名称必须一致,与返回值无关,与方法的修饰符,跑出的异常都没有关系,方法的参数必须不同,其中包括,数量不同,类型不同,顺序不同,下面看一个简单的例子 : 

public class Fatcher {
    String name;
    int age;
    public void function(){
        System.out.println("父亲会赚钱养家");
    }
    public void function(String actionDesc){ // 重载
        System.out.println("父亲还会"+actionDesc);
    }

    String show(){
        System.out.println("爸爸会给妈妈洗衣服,给孩子换尿不湿");
        // 项目中是各种逻辑处理
        return "父类返回值";
    }
}

调用 : 

@Test
public void testOverLoad(){
    Fatcher fatcher = new Fatcher();
    fatcher.function();
    fatcher.function("看小姐姐");
}

输出 :

父亲会赚钱养家
父亲还会看小姐姐

重载的意义 : 针对不同情况,调用对应函数

重写(@overwrite): 存在于继承关系的子类里面,也就是说重写的两个函数一定是在两个类里面

方法的重写,要求方法名,返回值必须一致,方法的修饰符必须大于等于父类修饰符,抛出的异常必须是父类抛出的异常的子类,如果父类方法的修饰符是private,则不能被子类重写

public class Son extends Fatcher {

    @Override
    String show() { // 重写
        //super.show(); // 这行代码,表示执行此方法,先执行父类的这个方法,可以不要
        System.out.println("儿子会哭会闹会睡觉");
        //  项目中是各种逻辑处理,肯定和父类的逻辑不一样
        return "子类返回值";
    }
}

执行 :

@Test
public void testOverRide(){
    Son son = new Son();
    son.show();
}

输出 :

儿子会哭会闹会睡觉

重写的意义 : 从父类继承下来的方法,方法内部处理逻辑不能满足子类的需求,子类重新定义

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值