我有个简短的问题是否可以用额外的参数扩展子类的方法?原始方法在父类中定义。
这个想法是声明一个基本功能,每个文件都必须检查。然后,子类应该基于典型的参数(如csv(columnCount,header,...))扩展父类的额外功能。
例如:
abstract class DataValidator {
fun checkIfFileDoesExist(fileName: String, fileExtension: String): Boolean {
val file = Path(fileName)
return when {
file.notExists() -> false
file.extension != fileExtension -> false
else -> true
}
}
}
class CsvValidator: DataValidator() {
override fun checkIfCsvFileDoesExist(
fileName: String,
fileExtension: String,
additionallyParameter: String
): Boolean {
var result = super.checkIfFileDoesExist(fileName, fileExtension)
// processing with additionallyParameter
return false
}
}
ide抛出一个错误,但是这样的问题如何解决呢?谢谢你的帮助。
2条答案
按热度按时间axr492tv1#
通常,在Java或Kotlin中,不可能使用不同的签名来 * 覆盖 * 一个方法。您可以 * 重载 * 方法,即有多个签名,并分别覆盖它们,但我不认为这是你正在寻找的。
如果不理解
additionalParameter
的含义,很难提出一种建模方法。此参数是否仅与CSV文件相关?一种可能的方法是将参数移动到构造函数中,并在基类中创建一个抽象方法,因为
additionalParameter
对所有可能的实现都是通用的。使用方法:
bxgwgixi2#
我想到了这个方法。