Dart 编程中的方法覆盖

我们知道我们可以通过使用 super 关键字或简单地创建子类的对象来从子类访问超类中存在的方法。但是,当我们希望子类对象在使用子类对象调用时对同一方法做不同的事情时,可能会有不同的情况。我们可以通过在子类中再次定义与超类中存在的相同方法具有相同名称、相同参数和相同返回类型的相同方法来实现这一点。

现在,当我们调用该方法时,将调用和执行子类中存在的方法,而不是超类中定义的方法。我们在超类中已经存在的子类中定义具有相同名称、相同参数和相同返回类型的方法的过程称为方法覆盖。

方法覆盖规则

  • 我们要覆盖的方法只能写在子类中,不能写在同一个类中。

  • 返回类型应该与超类中存在的方法相同。

  • 参数列表应该与超类中存在的方法相同。

  • 如果一个方法被声明为 static 或 final,我们就不能覆盖它。

  • 如果我们不能继承一个方法,我们就不能覆盖它。

示例

我们来看一个 dart 中方法覆盖的例子。

考虑下面显示的例子 -

class ParentClass {
   void displayName(){
      print("Inside the Parent class Method");
   }
}

class ChildClass extends ParentClass {
   void displayName(){
      print("Inside the Child class Method");
   }
}

void main(){
   ParentClass pClassObject = new ParentClass();
   ChildClass cClassObject = new ChildClass();
   pClassObject.displayName();
   cClassObject.displayName();
}

在上面的例子中,我们有两个名为 ParentClass 和 ChildClass 的类,ParentClass 是超类,ChildClass 是继承超类的子类,我们在类和主函数中都声明了一个名为 displayName 的方法,当我们正在尝试调用该方法。

输出结果

Inside the Parent class Method
Inside the Child class Method