1、 方法重载
1) 方法名称必须相同
2) 参数列表必须不同。可以是参数个数不同,或者类型不同,或者两者都有。
3) 返回类型可以相同,也可以不同。
4) 可以相互调用
5) 发生在同一类中
2、 方法覆盖
a) 方法名称必须相同
b) 参数列表必须相同
c) 返回类型必须相同。这是由上面两条决定的,当子类继承父类时,子类就可直接
访问父类的 public ,dafault 属性和方法,也就扩展了自己的作用域。一个作用域内,
一个方法签名(方法名称与参数列表)对应唯一的程序入口地址,计算机语言是
精确描述的语言,不能存在一个入口地址即可以是 int 型又可以是 String 型;因此
要求返回类型必须相同。进行覆盖后,在子类的“作用域”(扩展后的)中,编译
器将调用这一方法的唯一地址指向了子类的方法,“屏蔽”了父类方法。如果你真
调用父类方法或者在父类中调用自己的本类被覆盖后的方法,可以使用 super 或
者 this。
d) 子类方法不能有比父类方法更严格的访问权限
e) 除“未检查”异常外,子类不可以抛出比父类更多的异常。(异常这一块,在以后会
有详细总结)
f) 发生在子类与父类中。
实例:
//父类
public class Father {
int i = 1;
public Father(){
print();
}
public void print(){
System.out.println(“执行父类构造器”+i);
}
}
//子类
public class Sun extends Father{
int i =2;
public Sun(){
print();
}
public void print() throws ArithmeticException{
System.out.println(i);
}
}