重载和重写的区别
重载:
是发生在同一类中,
方法名称必须相同,
方法参数必须不同(参数个数不同,参数类型不同,参数顺序不同),
与返回类型无关,
访问修饰符无关,
可以抛出异常
重写:
发生在有继承关系的子类中,
方法声明相同,
方法名称相同,
参数列表相同,
返回类型相同,
访问修饰符不能更小,
不可抛出更多异常,但可抛出非编译异常(如运行时异常RuntimeException)。
当父类访问修饰符为private时,即使子类有同名的方法,也不能重写。
非静态方法不能被重写成静态方法。
静态方法,不能被重写。
父类的静态方法不能被重写,重写只适用于实例方法,不能用于静态方法,
静态方法可以隐藏,不能@Override和@Overload
静态方法只与类有关,static方法不是后期绑定,在编译期就绑定了。
静态方法不会进行多态判断,只与声明的类有关。