2009-07-01 5 views
0

C#は非常に面白いですが...残念ながら(または幸いにも!)OOPルールを実装するための多くの機能があります。混乱しています....CでOOPルールを学ぶための最善の方法またはベストプラクティス#

仮想、新しい、... C#の修飾子は異なる規則を持っています....どのようなOOPのルールを学ぶための最良の方法またはベストプラクティスとは簡単に使用できますか?

OOPルールを学習して簡単に使用するためのベストプラクティスとは何ですか?

+1

この記事を参照してください:http://stackoverflow.com/questions/159978/c-keyword-usage-virtualoverride-vs-new –

+0

素晴らしいリンク!あなたに感謝します – odiseh

答えて

2

fundamental sourceからOOPの原則(カプセル化、継承、多型)を学ぶのが最善です。そして、後で特定の言語の実装について心配してください。一度基本的な概念を理解すると、言語の特質は簡単に学び、適用し、マスターすることができます。

3

学習する最善の方法は、物事を簡単に保ち、実践(プログラム)することです。 新しい/オーバーライド/仮想に関しては、三つの主要な例があります。

  1. 仮想+オーバーライド - 利用基底クラスの仮想のと同様に、派生クラスでオーバーライドします:

    class BaseClass 
    {  
        public void virtual Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void override Test(){...} 
    } 
    
  2. 抽象+オーバーライド - これは、ベース部材は、本体が定義されていない以前のケースの変異体である:いいえ修飾子

    abstract class BaseClass 
    { 
        public void abstract Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void override Test(){...} 
    } 
    
  3. - これは有用であるWHあなたがメソッドをオーバーライドする予定がないエン:

    class BaseClass 
    { 
        public void Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public void OtherMethod(){...} 
    } 
    

    をこの場合OtherMethodTestに指名された場合は、警告が存在することになります。実際、それは基底法と衝突するでしょう。あなたは、私が可能であれば、それはやや混乱しているのでnew修飾子を避けることをお勧めします、しかし

    abstract class BaseClass 
    { 
        public void Test(){...} 
    } 
    class DerivedClass: BaseClass 
    { 
        public new void Test(){...} 
    } 
    

    のようnew修飾子を追加することにより、警告を取り除くことができます。

+0

ええ、あなたが言ったように、派生クラスのメソッドを実行するためにnewを使うのではなく、最後のケースでoverride修飾子を使うことができます... もしそうなら、新しい? – odiseh

+0

ベースが仮想でも抽象でもない限り、オーバーライドは使用できません –

+0

pn、ありがとうございます。 – odiseh

関連する問題