方法重写的理解 override overwrite;
1.重写:子类继承父类后,对父类中同名同形参列表的方法进行覆盖;
2.重写以后,当创建子类对象,通过子类对象调用子父类的同名同参的方法时,实际执行的是子类重写父类的方法;
3.重写的规定:
方法的声明:权限修饰符 返回值类型 方法名(形参列表)throws 异常类型{
//方法体
}
约定俗称:子类中的叫重写方法,父类中的叫被重写的方法;
子类重写的方法的方法名和形参列表 与 父类被重写的方法的 方法名和形参列表相同
子类重写的方法的权限修饰符 不小于 被重写方法的权限丢师傅
特殊情况:子类中不能重写父类中的private修饰的方法;
返回值类型:父类被重写的方法的返回值类型是void,子类重写的方法返回值类型必须是void;
父类被重写的方法的返回值类型是A 类型,则子类重写的方法返回值类型是A类OR A类的子类
父类被重写的方法的返回值类型 如果是基本类型(比如是 double);则子类重写的方法返回值类型是相同的基本数据类型(必须是double)
子类重写的方法抛出的异常不大于父类被重写的方法抛出的异常类型;
开发中往往直接复制过来,然后重写方法体;
子类和父类中同名和同参数的方法,要么都是声明非static的(考虑重写),要么都声明static的(不是重写;);
class Persons2{ String name; int age; public Persons2() { } public void eat() { System.out.println("吃饭"); } public void walk(int distance) { System.out.println("走了"+distance+"公里"); } } class Student extends Persons2{ String major; public Student() { } public Student(String major) { this.major = major; } public void study() { System.out.println("学习,专业是:"+major); } //对父类中的eat方法的覆盖 public void eat() { System.out.println("学生应该吃有营养的东西"); } }
Student 子类 继承了 Person2,并且重写了eat方法 于此同时,会覆盖 父类的方法 换句话来说,当调用student 的eat方法时,调用的时重写过父类的eat方法,
那么要是student还想使用父类的eat方法,那应该怎么办呢?那么就需要引入super关键字了;