sealed
が使用された後にクラスから継承することはできませんが、私はこれらの2つの違いは何ですか?混乱しています:private
とsealed
?封印されたクラスとプライベートクラスの違いは何ですか?
クラス全体ではなく継承したい場合は、基本クラスのメンバーをprivate
にすることはできませんか? sealed class
を使用するポイントは何ですか?
sealed
が使用された後にクラスから継承することはできませんが、私はこれらの2つの違いは何ですか?混乱しています:private
とsealed
?封印されたクラスとプライベートクラスの違いは何ですか?
クラス全体ではなく継承したい場合は、基本クラスのメンバーをprivate
にすることはできませんか? sealed class
を使用するポイントは何ですか?
プライベート: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 "...........";
}
}
}
_ "サブクラス" _は、他のクラスを継承するクラスを記述するための用語です。ネストされたクラスの記述には使用しないでください。 C#には 'Private'キーワードはありません。言語では大文字と小文字が区別され、「プライベート」しかありません。同様に、「密封」対「密封」。また、あなたはその質問に答えることができませんでした。上記のすべての情報は、マニュアルで容易に入手できます。 OPに彼らが何を求めたのかということを説明する必要があります。彼らはドキュメント自体を読むことができたので、ドキュメントの言い換えをするだけでは意味がありません。 –
@rohitファーストクラスをどのようにしてPvtにしていますか? –
私はあなたが知りたい、または聞きたいことを理解していません。私は説明する準備ができています。C#では、プライベートキーワードを使用してクラスをプライベートにすることができます。 @Deepak Jain –
を宣言するために使用されます。
クラスを継承できないようにする場合は、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.
あなただけの継承のためにそれらを使用できない作りのためにメンバーがプライベート作っているのであれば、あなたも、基本クラスから自分のアクセス性を失っています。
あなたの質問は研究の証拠を示していません。あなたは文書を見ましたか?'sealed'キーワードが何をしているのか知っていますか? 'private'キーワードは何をしていますか?ほとんどのクラスは他のクラスの中に入れ子にされていませんが、最初は「プライベート」として宣言できません。また、2番目のパラグラフは 'private'メンバを指し、' private'クラスは参照しません。それはあなたが聞いているのですか?あなたが何を求めているのかはまったく明らかではありません。 –
しかし、ネストされたクラスはpvtですか? @PeterDuniho –
_Only_ネストされたクラスは 'private'にすることができます。非ネストされたクラスは、そのコンテキストでは、アクセシビリティ 'private'がクラスへのアクセスをすべて拒否するため、できません。 –