区分方法的重写与方法重载的区别:
方法重载:它是出现在同一个类当中,诸多个同名的方法之间构成重载
方法重写:它是在子类当中,覆盖父类的同名方法构成重写
Note:
1.前提:有子类继承父类
2.子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类的方法重写、覆盖、覆写
3.重写的规则:
1)要求子类方法的 “返回值类型 方法名(参数列表)” 与父类的方法一样
2)子类方法的修饰符不能小于父类方法的修饰符。 比如父类的修饰符是缺省,子类就不能写private,而得写比缺省更大的protected或者public。
3)若父类方法抛异常,那么子类方法抛的异常类型不能大于父类的。
4)子父类的方法必须同为static或同为非static的。
代码示例:
public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void eat(){ System.out.println("吃饭"); } public void walk(){ System.out.println("走路"); } } public class Student extends Person { public void eat() { //该方法构成重写 System.out.println("学生在吃饭"); } }
“学生在吃饭”会覆盖掉父类的“吃饭”
tips:
如果炸父类的一个方法定义成private访问权限,在子类中将此方法声明为default访问权限,那么这样还叫做重写吗?
答案:No