Javaのオブジェクト指向概念詳細

静的コードブロック public class Employee { //2 { System.out.println("初期化ブロック"); } //1 一度だけ実行 static { System.out.println("静的コードブロック"); } //3 public Employee() { System.out.println("コンストラクタ"); } } 実行順序は、まず静的コードブロック(一度のみ)、次に初期化ブ ...

7月1日 00:11 投稿

Javaのインターフェースと抽象クラスの比較分析

1. 抽象クラスの定義と継承方法 まず、抽象クラスを定義してみましょう。以下は「人間」を表す抽象クラスHuman.javaの例です: // abstractキーワードを使用して抽象クラスを定義 public abstract class Human { // 実装済みのメソッド public void eat(){ System.out.println("人間は食べる"); } // public修飾子の空実装メソッド pub ...

6月15日 17:39 投稿

C#基本:抽象クラスとインターフェースの核心的な違い

C#におけるオブジェクト指向プログラミングを理解する上で、抽象クラスとインターフェースの違いを把握することは極めて重要です。どちらもクラスに特定の構造や振る舞いを強制する「契約」として機能しますが、その目的と特性には明確な違いがあります。本稿では、両者の概念を具体例と共に解説し、実際の開発でどのように使い分けるべきかを考察します。 抽象クラスの概 ...

6月9日 16:33 投稿

C++における継承とポリモーフィズムの核心

クラスの内部構造を調べるには、IDEの機能やtypeid、decltypeなどを活用すると便利です。 派生クラスのインスタンス生成時には、基底クラスのコンストラクタが先に呼び出されます。これは「合成よりも継承」の設計思想にも通じる動作で、基底部分の初期化が完了してから派生部分が構築されるため、オブジェクトの整合性が保たれます。 静的メンバへのアクセスは、インス ...

6月1日 10:36 投稿

C++における多態の実装と抽象クラスの利用

多態(ポリモーフィズム)とは、同じインターフェースを用いて異なるオブジェクトがそれぞれ固有の振る舞いを実現する仕組みである。たとえば、乗車券の購入という動作を「子供」と「大人」の両方に対して行う場合、同じメソッド呼び出しでも価格処理が異なり、これが多態の本質である。 虚関数とそのオーバーライド 多態を実現するには、基底クラスの仮想関数を派生クラス ...

5月17日 17:47 投稿

C#におけるabstractとvirtual修飾子の違いと設計指針

基本動作と構文上の制約 C#のオブジェクト指向設計において、実行時のメソッドディスパッチとポリモーフィズムを制御する際、abstractとvirtualが中心的な役割を果たします。両者は派生クラスへの動作委譲を可能にしますが、コンパイラが課す制約とアーキテクチャ上の意図が明確に異なります。 abstract修飾子の特性 abstractはクラス宣言またはメソッドシグネチャに適用 ...

5月16日 23:15 投稿