Java面向对象-方法重写(override)
方法重写(override)
*1.重写:子类继承父类以后,可以对父类中同名同参数的方法进行覆盖操作
*2.应用:重写以后,当创建子类对象以后,通过子类对象调用子父类同名同参数的方法时,实际执行的是子类重写父类的方法
*3.重写的规定:
* 方法的声明:权限修饰符 放回值类型 方法名 (形参列表)throws 异常类型
* {
* //方法体
* }
* 约定俗成:子类中的叫 重写的方法,父类中的叫 被重写的方法
* ①.子类重写的方法的方法名和形参列表与父类被重写的方法名和形参列表相同
* ②.子类重写的方法的权限修饰符不小于父类被重写的方法的修饰符
* 子类不能重写声明为private的父类方法
* ③.返回值类型:
* (1)、如果父类中被重写的方法返回值是void,则子类重写的方法返回值也是void
* (2)、父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
* (3)、父类被重写的方法的返回值类型是基本数据类型,则子类重写的方法的返回值类型必须是相同的基本数据类型
* ④.子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型
*
* ***********************************************************************
* 子类和父类中同名同参数的方法要么都声明为非静态的(考虑重写),要么都声明为静态的(不是重写)
public class OverrideTest { public static void main(String[] args) { Person1 person1=new Person1(); Student1 student1=new Student1(); person1.eat(); student1.eat(); } } class Person1{ String name; int age; public Person1() { } public Person1(String name, int age) { this.name = name; this.age = age; } public void eat() { System.out.println("人在吃饭"); } } class Student1 extends Person1{ public Student1() { } //对父类中eat()方法进行重写 @Override public void eat() { System.out.println("学生在吃饭"); } }