Dart 方法重写2024 年 8 月 29 日 | 5 分钟阅读 什么是多态?多态是两个希腊词的组合:poly,意思是多,morph 的意思是变形为不同的形式或形状。总之,多态意味着同一个实体可以以各种形式使用。在编程方面,同一个方法可以在不同的类中使用。这种技术使编程更直观、更容易。 例如 - 我们有一个 Shape 类来定义对象的形状。形状可以是圆形、矩形、正方形、直线等。所以这里的目标是相同的,但方法是不同的。 方法重写是实现多态的一种技术。有时,我们希望子类对象在调用同一个方法时给出不同的结果。这可以通过在子类中再次定义相同的方法来完成。该方法具有相同的名称、相同的参数和相同的返回类型。当调用该方法时,将执行子类的方法,而不是超类中定义的方法。 方法重写当我们在子类中声明与在超类中先前定义的相同方法时,称为方法重写。子类可以通过提供自己的实现来定义相同的方法,该实现已经存在于超类中。超类中的方法称为方法重写(method overridden),子类中的方法称为方法重写(method overriding)。让我们在以下示例中了解方法重写。 方法重写示例我们定义了两个类;第一个是一个名为Human的子类,第二个是一个超类Boy。 Boy 子类继承了 Human 超类。在两个类中都定义了相同的方法void showInfo(),但具有不同的实现。子类有它自己的 void showInfo() 定义。让我们看看以下代码片段。 示例 -输出 Boy is running 说明在上面的例子中,我们在子类和超类中定义了一个同名的方法。方法重写的目的是给出子类方法自己的实现。当我们创建 Boy 子类的对象时,它执行了子类方法并打印了 Man is running 而不是 Human is running。 如果我们创建父类的对象,那么它总是会调用父类的方法。 让我们看另一个例子,我们创建两个名为 College 和 Student 的类,它们都有共同的方法 void student_details()。让我们看看以下代码片段。 示例 - 2输出 The student name: Joseph The student rollno: 101 The result is failed The student name:Peter The student rollno: 102 The result is passed 说明在上面的例子中,我们创建了两个类 - College 作为父类,Student 作为子类。 stu_details 方法在两个类中定义,具有相同的参数和相同的返回类型。 现在,College 超类被 Student 子类继承,并且 stu_details() 方法在子类中被重写。 我们创建了 Student 的对象并调用了带有适当参数的 stu_details()。 它执行了子类方法,然后打印了结果。 同样,我们创建了 College 超类对象,调用了它的方法并打印了不同的结果。 使用 super 关键字的方法重写我们可以在不创建父类对象的情况下调用父类方法。 这可以通过在子类中使用 super 关键字来完成。 父类的数据成员可以通过在子类中使用 super 关键字来访问。 让我们理解以下示例。 示例 -输出 Human is running Boy is running 说明在上面的程序中,我们使用 super 关键字在子类中访问了 Human 类的方法。 现在,我们不需要实例化父类。 我们只创建了子类的对象,该对象调用了子类的 run() 方法和父类的方法。 注意 - 当我们创建子类对象并调用方法时,它首先执行父类(如果通过 super 关键字访问)方法,然后执行子类方法。方法重写的优点方法重写的主要好处是,子类可以根据需要为其相同的方法提供自己的实现,而无需对超类方法进行任何更改。 当我们希望子类方法以不同的方式运行,并且名称相同时,此技术非常有用。 Dart 中方法重写的规则下面给出了方法重写的一些规则。 在子类中声明相同的方法时,必须牢记这些要点。
|
我们请求您订阅我们的新闻通讯以获取最新更新。