重写和重载的详细解析

重载(Overload)

指的是在同一个类中,存在多个名称相同的方法,但是这些方法的参数个数,参数类型,或者参数顺序不同。在满足前面三个条件任意其中一个的情况下,方法的返回类型和访问修饰符可以不同。

注意: 仅仅只是方法的返回类型不同不能构成重载!!

public class Test {
    public static void main(String[] args) {
		Test test = new Test();
		test.koutufenfang(1);// 参数个数相同,类型不同
		test.koutufenfang(1.2);
		test.koutufenfang(1, 1.2); // 参数个数相同,顺序不同
    	test.koutufenfang(1.2, 1); 
    }
    // 参数个数1,参数类型int
    public void koutufenfang(int x){
        System.out.println("牛逼!");
    }
    // 参数个数1,参数类型float
    public void koutufenfang(double y){
        System.out.println("卧槽!");
    }
    // 参数个数2, 参数类型(float,int)
    public void koutufenfang(double x, int y){
        System.out.println("碉堡了!");
    }
    // 参数个数2,参数类型(int, float)
    public void koutufenfang(int y, double x){
    	System.out.println("贼鸡儿恐怖!");
    }
}

重写(Override)

子类方法对父类方法的覆盖,要求重写方法的参数个数,类型,顺序与被重写的父类方法完全一致,返回类型必须与被重写方法的返回类型相同或者是其子类,否则视为重载。重写的方法的访问修饰符必须大于等于被重写方法的访问修饰符 (public > protected > default > private) 。重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。例如:父类的一个方法申明了一个检查异常IOException,在重写这个方法是就不能抛出Exception,只能抛出IOException的子类异常,可以抛出非检查异常。

public class Test {

    public static void main(String[] args) {
        Parent person = new Children();
        person.getAge();
    }
}

class Parent {

    Object getAge() {
        System.out.println("parent...");
        return null;
    }
}

class Children extends Parent {
     //方法重写,返回值相同或是其子类
    @Override
    Integer getAge() {
        System.out.println("children...");
        return 0;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值