重写和重载

一。重载(overload) 在同一个类中,只要方法的方法名相同,那么这几个方法就构成重载。重载方法的参数类型和参数个数可以不同,

返回值的类型也可以不同,无法根据返回值类型来判断一个方法是不是重载方法。重载方法的权限可以是是任意权限, 是没有要求的。

构造方法的重载:只需要看参数即可,如果想在一个构造方法中调用另一个构造方法,那么可以使用 this () 的方 法调用,this () 括号中的参数表示目标构造方法的参数,this () 必须要作为构造方法的第一跳语句,换句话说,this () 之前 不能有任何可执行的代码。

public static int abs(int a) {
    return (a < 0) ? -a : a;
}

public static long abs(long a) {
    return (a < 0) ? -a : a;
}

public static float abs(float a) {
     return (a <= 0.0F) ? 0.0F - a : a;
}

public static double abs(double a) {
     return (a <= 0.0D) ? 0.0D - a : a;
}

重载规则如下:

必须具有不同的参数列表 可以有不同的返回类型 可以有不同的访问修饰符 可以抛出不同的异常

二。重写(override) 重写方法的方法名和方法参数(参数数量,参数类型)必须完全一致。在 java 1.5 版本之前,重写方法的返回值必须

和原方法的返回值类型完全一样。而在 1.5 版本之后,java 放宽了这一要求,重写方法的返回值类型比原方法的返回值类

型小即可。重写方法抛出的异常,不能大于原方法抛出的异常。重写方法的权限不能小于原方法的权限。重写方法只能发

生在父类和子类之间。

简单来说,重写方法的规则就是两同,两小,一大。

重写要注意的问题:

     1)声明为final的方法不能被重写。

     2)static的方法不能被重写,但是能够被继承。

     3)构造方法不能被重写,因为构造方法是属于类的。

     4)子类要想重写,就要先继承,怎么才能继承呢?这就要考虑权限的问题。private的方法除了本类对外屏蔽,
        不能继承,也就不能重写。defalt 只能当子类和父类在同一包下才可以继承,然后重写。

重写的话,我们以 String 类的 equals () 方法为例,基类中 equals () 是这样的:

public boolean equals(Object obj) {
    return (this == obj);
}

而子类 String 的 equals () 重写后是这样的:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    } return false;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值