2017-06-25 16 views
-1

sealedが使用された後にクラスから継承することはできませんが、私はこれらの2つの違いは何ですか?混乱しています:privatesealed封印されたクラスとプライベートクラスの違いは何ですか?

クラス全体ではなく継承したい場合は、基本クラスのメンバーをprivateにすることはできませんか? sealed classを使用するポイントは何ですか?

+0

あなたの質問は研究の証拠を示していません。あなたは文書を見ましたか?'sealed'キーワードが何をしているのか知っていますか? 'private'キーワードは何をしていますか?ほとんどのクラスは他のクラスの中に入れ子にされていませんが、最初は「プライベート」として宣言できません。また、2番目のパラグラフは 'private'メンバを指し、' private'クラスは参照しません。それはあなたが聞いているのですか?あなたが何を求めているのかはまったく明らかではありません。 –

+0

しかし、ネストされたクラスはpvtですか? @PeterDuniho –

+0

_Only_ネストされたクラスは 'private'にすることができます。非ネストされたクラスは、そのコンテキストでは、アクセシビリティ 'private'がクラスへのアクセスをすべて拒否するため、できません。 –

答えて

4

プライベート:privateは、有効範囲をスコープに制限します。クラス内でプライベートクラスを宣言すると、クラス外からサブクラスを見ることができません。 これはメソッドとプロパティーにも当てはまります。クラス内では見ることができますが、コンシューマーや継承者には見えません。 privateキーワードは、宣言クラスに使用されます。

封筒:クラスがsealedと宣言されている場合、そのクラスから継承することはできません。 sealedクラスは、クラスがライブラリ、クラスの操作の内部にある場合、またはそのクラスが機能に影響する可能性があるため、そのクラスをオーバーライドしたくない場合に使用できます。 sealedキーワードはあなたがinheritabilityとアクセシビリティの違いを理解する必要があるクラス

public class Parent { 
     // some thing at here 
     private readonly SubClass sc; 


     // ctor 
     public Parent() { 
       sc = new SubClass(); 
     } 


     public string foo() { 
      return sc.bar(); 
     } 


     private class SubClass { 
      // have some thing here 
      public string bar() { 
       //.............. 
       return "..........."; 
      } 
     } 
} 
+0

_ "サブクラス" _は、他のクラスを継承するクラスを記述するための用語です。ネストされたクラスの記述には使用しないでください。 C#には 'Private'キーワードはありません。言語では大文字と小文字が区別され、「プライベート」しかありません。同様に、「密封」対「密封」。また、あなたはその質問に答えることができませんでした。上記のすべての情報は、マニュアルで容易に入手できます。 OPに彼らが何を求めたのかということを説明する必要があります。彼らはドキュメント自体を読むことができたので、ドキュメントの言い換えをするだけでは意味がありません。 –

+0

@rohitファーストクラスをどのようにしてPvtにしていますか? –

+0

私はあなたが知りたい、または聞きたいことを理解していません。私は説明する準備ができています。C#では、プライベートキーワードを使用してクラスをプライベートにすることができます。 @Deepak Jain –

0

を宣言するために使用されます。

クラスを継承できないようにする場合は、sealedが最適です。また、クラスはprotected,privateまたはinternal protectedにはできません。これらのアクセス指定子は、サブクラスのみが持つことができます。名前空間の直下にある通常のクラスは、publicまたはinternalにしかなりません。

ここでは、すべてのメンバーを基本クラスで非公開にすることができます。そうすることは目的を果たさない。

クラスを継承するのは、特定のプロパティおよび/またはメソッドを再利用するか、継承したクラスでオーバーライドすることだけです。すべてのメンバーを基本クラスで非公開にすると、基本クラスのオブジェクトを使用しても、それらのメンバーにはアクセスできなくなります。 それでは、基本クラスでそれらを持つのは何ですか。あなたが別のクラスで、このクラスを継承する場合は、

MyClass obj = new ChildClass(); 

を行う際

public class MyClass 
{ 
    private void MyMethod() //You can not inherit this method but you can not use it using 'MyClass' also. 
    { 
     //Some code. 
    } 
} 

MyClass myObj = new MyClass(); 
myObj.MyMethod(); // You can not do this as the method is private. 

public ChildClass : MyClass 
{ 
    public void ChildMethod() 
    { 
     // Some Logic 
    } 
} 

は、今あなたが次の操作を行うことはできません

obj.MyMethod(); //coz this is private method. 

を行うことはできませんあまりにも。

obj.ChildMethod(); //coz that method is not known to MyClass. 

あなただけの継承のためにそれらを使用できない作りのためにメンバーがプライベート作っているのであれば、あなたも、基本クラスから自分のアクセス性を失っています。

関連する問題