区分重写和重载
1定义:
方法的重载:在同一个类中,允许存在一个以上的同名方法,只要它们的
参数列表不同即 参数个数不同(包括参数顺序),参数类型不同。构造器可以重载。
方法的重写(override / overwrite):子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作。
2
方法的重载:判断是否是重载
跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系。
方法的重写(override / overwrite):
子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
特殊情况:子类不能重写父类中声明为private权限的方法
返回值类型:
>父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型只能是void
>父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是double)
子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)
子类和父类中的同名同参数的方法要么都声明为非static的(考虑重写),要么都声明为static的(不是重写)。
3 从运行和编译的角度看:重载不表现为多态性,重写表现为多态性。(从编译和运行的角度,重载,在编译器就确定调的是那个方