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);
}
}
//测试类
public class Test {
int i = 1;
public Test(int i ,int j ){
}
public static void main(String[] args) {
Sun sun = new Sun();
}
}
输出结果:
0    //执行父类时,其实是调用子类的方法;因为在一个作用域里方法的入口(方
java重载//法名和参数一致就表示入口一致,父类的入口被子类覆盖)是唯一的。
2