C#のプライベートメソッドとfinalメソッド(sealed修飾子)の基本
プライベートメソッドとは
C#でプライベートメソッドを定義するには、アクセス修飾子「private」を使用します。
privateアクセス修飾子を指定すると、そのクラスはメンバ変数やメンバ関数を、他の関数やオブジェクトから隠すことができます。privateメンバにアクセスできるのは、同じクラス内の関数のみです。クラスのインスタンス(オブジェクト)からであっても、privateメンバに直接アクセスすることはできません。
finalメソッド(sealedメソッド)とは
C#では、他言語におけるfinalメソッドに相当する機能として「sealed」修飾子を使用します。
メソッドにsealed修飾子を付けると、そのメソッドはそれ以上オーバーライドできなくなります。ただし、sealedメソッドは必ず派生クラスの一部である必要があり、かつオーバーライドされたメソッドに対してのみ指定できます。
サンプルコード
以下の例では、ClassTwoという派生クラスのdisplay()メソッドにsealed修飾子が付いているため、このメソッドをさらにオーバーライドすることはできません。
ここで、ClassOneが基底クラスであり、ClassTwoとClassThreeはそれぞれ派生クラスとなります。
class ClassOne {
public virtual void display() {
Console.WriteLine("baseclass");
}
}
class ClassTwo : ClassOne {
public sealed override void display() {
Console.WriteLine("ClassTwo: DerivedClass");
}
}
class ClassThree : ClassTwo {
public override void display() {
Console.WriteLine("ClassThree: Another Derived Class");
}
}上記のコードでは、ClassThree内でsealedメソッドdisplay()をオーバーライドしようとしています。しかし、sealedメソッドの再オーバーライドは許可されていないため、コンパイルエラーが発生します。このように、sealed修飾子を使うことで、継承階層の中で特定のメソッドのオーバーライドをそこで止めることができます。
-
Rubyのprivateメソッドとprotectedメソッドを徹底解説!メソッドの可視性をマスターしよう
Rubyにおける「プライベートメソッド」とは、そのメソッドが定義されたクラスの内部からしか呼び出せないメソッドのことです。 privateやprotectedといった可視性(visibility)を適切に設定することで、クラス外部からのアクセスを制御し、より安全で保守しやすいコードを書くことができます。 Rubyの3つのメソッド可視性 Rubyのメソッドには、以下の3種類の可視性があります。 private … クラス内部からのみ呼び出せる public … デフォルト。誰でも呼び出せる protected … クラス内部+同クラスのインスタンス経由で呼び出せる デフォルトでは、すべてのメ
-
RubyとRuby on Railsでメソッド委譲を行う方法【delegate・Forwardable・SimpleDelegator徹底解説】
この記事では、Rubyにおけるメソッド委譲(delegation)について詳しく解説します。 delegateメソッド、Forwardableモジュール、そしてSimpleDelegatorクラスの3つの手法を使いこなせるようになりましょう。 なぜ「委譲」が必要なのか? オブジェクト指向プログラミングにおいて、クラス同士が協調して動作する方法は主に2つあります。 継承(Inheritance) コンポジション(Composition) 継承では、親クラスが持つメソッド、定数、インスタンス変数の定義を、それを継承するすべての子クラスが共有するクラス階層を構築します。 例えば、Rubyではすべ