java多态的2种表现形式 方法重载和方法覆盖
方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载。
方法覆盖:子类重新实现了父类中的方法。
方法重载
public static void overLoad(int i){
System.out.println(i);
}
/* 下面方法都与第一个方法public static void overLoad(int i)相比较*/
//public int overLoad(int k){}//错误,参数列表相同
//返回值类型不相同
public int overLoad(int i,int k){
return 0;
}
//修饰符不同
private void overLoad(double d){
}
//修饰符,返回值类型都不同
private double overLoad(double d,int k){
return 0;
}
}
方法覆盖
}
class Exception1 extends Exception{}
class Exception2 extends Exception1{}
class Exception3 extends Exception2{}
class Parent{
void method() throws Exception2{}
}
class Son extends Parent{
//private void method(){}//错误,缩小了父类方法的访问权限
//int method(){} //错误,方法返回值与父类方法不一致
void method(int k){} //通过编译,但不与父类的方法method()构成覆盖
//public void method() throws Exception1{}//错误 抛出比父类更多的异常
//public void method(){} //正确 扩大父类方法的访问权限,不抛出异常
//void method() throws Exception3{}; //正确 抛出的异常比父类抛出的异常小
public void method() throws Exception3{}
}