元のアドレス: //m.sbmmt.com/
私たちの会社には 2 種類のプログラマがいると仮定します。VB プログラマは、VB でプログラムを作成するプログラマを指し、clsVBProgramer クラスで表されます。 Delphi プログラマは、Delphi でプログラムを作成するプログラマを指し、clsDelphiProgramer クラスで表されます。すべてのクラスには WriteCode() メソッドがあります。定義は次のとおりです。
class clsVBProgramer() { .... WriteCode() { //用VB语言写代码; } .... } class clsDelphiProgramer() { .... WriteCode() { //用Delphi语言写代码; } .... }
現在、会社にはプロジェクトがあり、特定のプログラマーにプログラムを作成する必要があります。
class clsProject() { .... WritePrograme(clsVBProgramer programer)//用VB写代码 { programer.WriteCode(); } WritePrograme(clsDelphiProgramer programer)//重载方法,用Delphi写代码 { programer.WriteCode(); } ...... }
メインプログラムでは次のように書くことができます:そうですかしかし、もし会社が別の C# プログラムを持ってきたらこの時点で メンバー、C# でプログラムを作成する機能を実現するには、このプログラムをどのように変更すればよいでしょうか。新しいクラス clsCSharpProgramer を追加すると同時に、この clsProject クラスで WritePrograme (clsCSharpProgramer プログラマー) メソッドを再度オーバーロードする必要があります。今度はさらにトラブルです。 C プログラマー、C++ プログラマー、JAVA プログラマーがいる場合はどうなるでしょうか。大きな問題!
最初にプログラマ インターフェイスを宣言します: 上記は、C# インターフェイスの役割についての詳細な理解です。さらに関連するコンテンツについては、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。 main()
{
clsProject proj=new clsProject;
//如果需要用VB写代码
clsVBProgramer programer1=new clsVBProgramer;
proj.WritePrograme(programer1);
//如果需要用Delphi写代码
clsDelphiProgramer programer2=new clsDelphiProgramer;
proj.WritePrograme(programer2);
}
interface IProgramer()
{
WriteCode();
}
然后声明两个类,并实现IProgramer接口:
class clsVBProgramer():IProgramer
{
....
WriteCode()
{
//用VB语言写代码;
}
....
}
class clsDelphiProgramer():IProgramer
{
....
WriteCode()
{
//用Delphi语言写代码;
}
....
}