oop - 在抽象类中将方法声明为可选

标签 oop interface dart abstract-class

据我在 Dart 中了解,可以使用抽象类来声明“接口(interface)”或“协议(protocol)”(如果您来自 Objective-c)。
无论如何,我很难找到在抽象类/接口(interface)中声明可选方法的方法。

如果我在抽象类中声明一个方法 一个 , 并让具体类 实现一个 ,我在编译器中收到警告。
我希望能够将方法声明为可选或至少提供默认实现,而无需在实现我的接口(interface)的类中“重新声明”它。

abstract class A{
   void abstractMethod();
}

class B implements A{
 //not implementing abstract method here gives a warning
}

最佳答案

这不是接口(interface)的工作方式。如果你的类声明要实现一个接口(interface),那么这就是它必须做的。
可以拆分界面

abstract class A {
   void abstractMethod();
}

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


class B implements A {
 //not implementing abstract method here gives a warning
}
只有当它声明执行A1它必须执行optionalMethod .
或者,您可以扩展抽象类
abstract class A{
   void abstractMethod();
   void optionalMethod(){};
}

class B extends A {
 //not implementing abstract method here gives a warning
}
那么只有 abstractMethod需要被覆盖,因为 A不提供实现。

关于oop - 在抽象类中将方法声明为可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38750689/

相关文章:

java - 如何找到继承给定接口(interface)的类实例?

Flutter:找到这个候选人,但参数不匹配

dart - 在 flutter 中更改标签栏的背景颜色

c++ - C++中如何正确使用虚成员函数

java - 内部类的目的是什么

Python Pickle 模块和 OOP

dart - HashMap 没有实例键

c# - 继承需要存储子类特定数据的数组的最佳方法是什么?

c++ - 如何用多态行为实现接口(interface)隔离c++

java - 为什么我可以使用接口(interface)枚举方法而不覆盖它们?