Flutter:child class 中的可选方法实现

Flutter: Optional method implementation in child class

我有摘要 class 。在 A class 里面我有例如 3 种方法:

abstract class A {
 @protected
 void method1()

 @protected
 void method2()

 @protected
 void method3()
}

现在,Class B 是从 A 扩展而来的:

class B extends A {
@override
method1(){}

@override
method2(){}

@override
method3(){}// be optional 
}

我不想强制class B实现class A中所有受保护的方法。例如我想child class强制实现2个方法classA的3种方法和一种方法是可选的。

如何在 flutter 上实现?

在这种情况下,您需要为基础方法定义一个空主体class。

abstract class A {
 @protected
 void method1() {}

 @protected
 void method2() {}

 @protected
 void method3() {}
}

我建议您在方法主体中抛出 NotImplemented 之类的错误,以便在您忘记实现功能并调用它时通知您。

您可以通过两种方式实现所需的行为:

第一个:

abstract class A {
  void method1();

  void method2();
  
  void method3 () {
    //default implmentation or empty body
  }
}

class B extends A {
  @override
  method1() {}

  @override
  method2() {}
}

第二个:

abstract class A {
  void method1();

  void method2();
}

abstract class A1 extends A {
  void method3();
}

class B extends A1 {
  @override
  method1() {}

  @override
  method2() {}
}

这样你只会在 class extends A1 class 而没有实现 method3().

时收到警告