- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对抽象类和接口(interface)具有相同签名方法的这种情况感到困惑。派生类中会有多少个定义?调用将如何解决?
public abstract class AbClass
{
public abstract void printMyName();
}
internal interface Iinterface
{
void printMyName();
}
public class MainClass : AbClass, Iinterface
{
//how this methods will be implemented here???
}
最佳答案
在默认情况下只有一个实现,但如果您使用 void Iinterface.printMyName
签名定义方法,则可以有两个实现。看看关于 Difference between Implicit and Explicit implementations 的问题.你的样本也有一些错误
printMyName
未标记为抽象,因此它应该有 body 。-
public abstract class AbClass
{
public abstract void printMyName();
}
internal interface Iinterface
{
void printMyName();
}
public class MainClass : AbClass, Iinterface
{
//how this methods will be implemented here???
public override void printMyName()
{
Console.WriteLine("Abstract class implementation");
}
//You can implement interface method using next signature
void Iinterface.printMyName()
{
Console.WriteLine("Interface implementation");
}
}
public class MainClass_WithoutExplicityImplementation : AbClass, Iinterface
{
//how this methods will be implemented here???
public override void printMyName()
{
Console.WriteLine("Abstract class and interface implementation");
}
}
使用示例
var mainInstance = new MainClass();
mainInstance.printMyName(); //Abstract class implementation
Iinterface viaInterface = mainInstance;
viaInterface.printMyName(); //Interface implementation
var mainInstance2 = new MainClass_WithoutExplicityImplementation();
mainInstance2.printMyName(); //Abstract class and interface implementation
Iinterface viaInterface = mainInstance2;
viaInterface.printMyName(); //Abstract class and interface implementation
关于c# - tclass 扩展一个抽象类并使用相同的签名方法实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32392003/
我正在尝试做这样的事情: function CreateIfForm ( const nClass : TClass ) : TForm; begin if not ( nClass is TFo
遇到问题,其中 MyObj.classnameis(TMyClass.classname) 为 true 并且 TMyClass(MyObj) 有效,但 (MyObj as TMyclass).doS
我正在尝试创建一个通用的“更新表达式构建器”——一个可以传递的对象,用于指示需要为哪些字段分配什么值。我所做的是: public class UpdateExpression : Dictionary
我对抽象类和接口(interface)具有相同签名方法的这种情况感到困惑。派生类中会有多少个定义?调用将如何解决? public abstract class AbClass { public
我需要我的一些表单类实现相同的功能。 (我已经放弃了将此函数添加到通用锚定表单的想法,因为我不想添加一个对我的大多数表单都无用的函数。) 所以...我考虑使用接口(interface)。 IMyInt
我有以下方法,使用“经典”bcc32 编译器可以很好地编译,但无法使用 Rad Studio 10 Clang 编译器进行编译。 TPersistentClass & __fastcall TServ
我是一名优秀的程序员,十分优秀!