方法重写

方法重写

假设对于狗类我们想要有自己的吃东西方法,而不使用父类实现的吃东西方法,也就是说狗虽然也有吃东西的能力,但是和父类的表现形式不一样,那么就可以通过方法重写实现。

语法规则

要求方法的返回值类型,方法名,参数类型、顺序、个数都要与父类继承的方法相同,与方法的参数名无关。
PS:方法的访问修饰符是可以允许有变化的,方法返回值类型也是允许不同的。

方法重写实现

当子类重写父类方法后,子类对象调用的是重写后的方法。
在dog子类中重写父类的eat方法,并重新运行测试用例

注意事项
  • 虽然重写仅限于方法重写,但是在子类当中,也可以定义与父类重名的属性的,访问属性时子类对象也是优先访问自己的属性。
  • 可以使用override注解来标注该方法是一个重写方法,该注解可以帮助检查重写的方法是否合理(不合理会编译错误)。
  • 父类中的静态方法是无法被子类重写的,如果子类也定义了一样的静态方法,则属于子类独有的方法。
返回值类型

对于重写方法的返回值类型,如果是引用数据类型,允许返回类型是子类类型。

访问修饰符

Java中的访问修饰符包含四种:默认(不加任何修饰符)、private(私有的)、protected(受保护的)、public(公有的)。
private:只允许在本类中进行访问
public:允许在任意位置访问
protected:允许在当前类、同包子类/非子类、跨包子类调用,跨包非子类不允许。
默认:允许在当前类、同包子类/非子类调用,跨包子类/非子类不允许调用

方法重写 vs 方法重载

方法重载

  1. 在同一个类中
  2. 方法名相同,参数列表不同(参数顺序、个数、类型)
  3. 方法返回值、访问修饰符任意

方法重写

  1. 在满足继承关系的子类中(子类重写父类)
  2. 方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值允许是子类类型
  3. 访问修饰符,访问范围需要大于等于父类方法的访问范围

你可能感兴趣的:(方法重写)