Go言語のreflectパッケージを使った実行時メタプログラミング実践

実行時に型情報を扱うための3原則 インタフェース値 → reflect.Value / reflect.Type への変換が可能 reflect.Value / reflect.Type → インタフェース値 への復元が可能 reflect.Value で値を書き換えるには「アドレス可能」である必要がある 型システムとreflectの関係 Goでは変数は「静的型」と「実行時型(コンクリート型)」を持つ。 静的型はソースコード上で宣言 ...

7月20日 17:30 投稿

Java オブジェクト指向設計:抽象化とポリモーフィズムの徹底解説

抽象クラスと抽象メソッド abstract キーワードは、クラスまたはメソッドに対して適用される修飾子です。このキーワードを使用して宣言されたものは、完全な定義を持たず、サブクラスによる実装を必要とします。 制約事項: final, static, private と同時に使用することはできません。また、抽象メソッドを直接実装した状態で定義されるため、オーバーライド(再定義)の ...

7月14日 00:54 投稿

C#における明示的インターフェース実装と継承の挙動解説

C#で複数のインターフェースを実装しつつ抽象クラスを継承する際、メソッド名が衝突するときの解決方法を整理します。 前提となる型定義 public interface ILeft { void Execute(); } public interface IRight { void Execute(); } public abstract class BaseRunner { public abstract void Execute(); } パターン1:抽象クラスを継承+明示的実装を利用 ...

6月17日 16:10 投稿

Javaのオブジェクト指向プログラミング:継承・抽象クラス・インターフェース・ポリモーフィズム

継承 継承とは既存のクラス(スーパークラス)を基にして新しいクラス(サブクラス)を作成する仕組みです。サブクラスはスーパークラスのフィールドとメソッドを引き継ぎます。 class SuperClass { // スーパークラスの内容 } class SubClass extends SuperClass { // サブクラスの内容 } 継承における注意点: Javaでは単一継承のみサポートされ、多重継承は許 ...

5月16日 02:08 投稿