继承(重写)
静态方法
可以被重载,不可以被重写。
静态方法是类在加载时就被加载到内存中的方法,在整个运行过程中保持不变,因而不能重写。但非静态方法是在对象实例化时才单独申请内存空间,为每一个实例分配独立的运行内存,因而可以重写。
代码演示图:
图中可以看到当a类继承了b类,此时我在a类中写了和b类一样的方法,但是输出结果可以看到没能重写b类,所以说明静态方法只能被重载不能被重写。
复习下方法中的重载:方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数
方法的重载的规则:
1.方法名称必须相同
2.参数列表必须不同(个数不同,或者类型不同,参数排列顺序不同等)
3.方法的返回类型可有相同也可以不相同
4.仅仅返回类型不同不足以成为方法的重载
实现理论
方法名字相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。
动态方法(无static)
图中可以看出实现了方法的重写,父类的引用指向了子类,子类重写了父类的方法然后输出。
重写的注意点
重写:需要有继承关系,子类重写父类的方法!
1.方法名必须相同
2.参数列表列表必须相同
3.修饰符:范围可以扩大但不能缩小:
public > protected > Default > private
4.抛出的异常:范围,可以被缩小,但不能扩大:
ClassNotFoundExcption--->Exception(大)
重写:子类的方法和父亲必要一致:方法体不同!
为什么需要重写:
1.父类的功能:子类不一定需要,或者不一定满足!
Alt+insert ;override Windows
control+enter:override Mac