Inheritance Dart:如何为抽象类创建最终成员接口
我想强制类Inheritance Dart:如何为抽象类创建最终成员接口,inheritance,dart,interface,Inheritance,Dart,Interface,我想强制类User来实现抽象类Base中的静态成员。这是可能的,还是我错误地使用了抽象继承范式 如果没有继承,用户可以简单地实现它自己的静态成员,而不重写基,但是我希望我的linter在类没有实现某个静态成员时发出警告 工作原理(不强制执行接口) 我们可以在Base和User中隐式使用相同的界面 抽象类基类{ //这个成员可以简单地删除,代码段仍然可以编译。 静态最终字符串routeName='/base'; } 类用户扩展基{ 静态最终字符串routeName='/base/user'; }
User
来实现抽象类Base
中的静态成员。这是可能的,还是我错误地使用了抽象继承范式
如果没有继承,用户
可以简单地实现它自己的静态成员,而不重写基
,但是我希望我的linter在类没有实现某个静态成员时发出警告
工作原理(不强制执行接口)
我们可以在Base
和User
中隐式使用相同的界面
抽象类基类{
//这个成员可以简单地删除,代码段仍然可以编译。
静态最终字符串routeName='/base';
}
类用户扩展基{
静态最终字符串routeName='/base/user';
}
如果我们要创建一个新类Person
,该类还扩展了Base
,那么我们没有具体的实现需求。理想情况下,我希望强制Person
拥有一个静态成员routeName
classperson扩展了基本类{
//没有关于缺少静态成员“routeName”的警告。
}
想法示例(未编译)
Base
将包含一个未实现的静态成员(routeName
)
除非指定routeName
(例如routeName='/base'
),否则此代码段不会编译
抽象类基类{
//IDE错误:必须初始化最终变量“routeName”。
静态最终字符串routeName;
}
实现Base
的用户将覆盖或实现静态成员
除非我们删除错误放置的@override
,否则代码段将报告一条警告
类用户扩展基{
//IDE警告:字段不重写继承的getter或setter。
@凌驾
静态最终字符串routeName='/base/user';
}
我希望IDE为Person
类抛出一个错误,因为它没有实现静态成员routeName
classperson扩展了基本类{
//预期IDE错误:必须初始化静态最终变量“routeName”。
}
对我来说,这看起来类似于,但我不熟悉Java的细节。您对其他解决方案持开放态度吗?这是不可能的,但是有其他非常方便的方法来实现这一点。欢迎在静态成员上实施此类类行为的任何其他解决方案。我的主要目标是捕捉难闻或不完整的类(最好是使用静态代码分析或IDE中的linting)。结果是一个易于实现的类,但是getter仍然需要一个本地定义的常量来实现编译时方法。