我有一个界面:
interface ISqlite
{
DataTable select(SQLiteDatabase db);
}
实现它:
public DataTable select(ISqlite s) {
return s.select(driver);
}
正如您所看到的,方法select
的描述为DataTable
类型。
如何覆盖此方法以使其不返回DataTable
,而是返回数组或任何其他类型?
我的意思是:
public Array select(ISqlite s) {
return s.select(driver);
}
答案 0 :(得分:1)
创建接口是为了防止你这样做。
相反,这样做:
interface ISqliteDatatable
{
DataTable selectDataTable(SQLiteDatabase db);
}
interface ISqliteArray
{
Array selectArray(SQLiteDatabase db);
}
然后当你上课时,根据你的需要决定实现哪个界面。
此解决方案可能仍然不完全正确,但我们不了解您的整体设计,因此任何进一步的更正都会更高。
以下是如何实现这两个方法:
public class example : ISqliteArray : ISqliteDataTable
{
public DataTable selectDataTable(SQLiteDatabase db)
{
// Do stuff and return a datatable
}
public Array selectArray(SQLiteDatabase db)
{
// Do stuff and return an array
}
}
答案 1 :(得分:0)
您无法更改方法的返回类型(例如"覆盖"正如您在问题中所写的那样)
考虑使用abstract class如果您不需要继承另一个类,您将能够指定方法的默认实现。
您需要为每种返回类型编写一个单独的方法。