一。重载(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;
}
755

被折叠的 条评论
为什么被折叠?



