オブジェクト指向

Java

【Java】JavaのObjectクラスの役割と共通メソッドを理解する

こんにちは、かつコーチです。「継承していないのに、なぜどのクラスでもequals()やtoString()が呼べるのか」と疑問に思ったことはありませんか。今回はすべてのクラスの頂点にあるObjectクラスの役割を整理します。Objectクラ...
Java

【Java】Javaのequals・hashCode・toStringを正しく実装する

こんにちは、かつコーチです。「HashSetに入れたはずのオブジェクトが重複して入ってしまう」といったバグに遭遇したことはありませんか。今回はequals・hashCode・toStringを正しく実装するための考え方を、実際のバグ事例とあ...
Java

【Java】Java21のrecordでシンプルにデータを表現する使い方

こんにちは、かつコーチです。「値を保持するだけのクラス」を作るたびに、コンストラクタ・getter・equals・hashCode・toStringを書くのに疲れたことはありませんか。今回はJava 21(LTS)でも標準機能として使えるr...
Java

【Java】Javaのenumの使い方:定数管理から振る舞いの実装まで

こんにちは、かつコーチです。「曜日」や「ステータス」のような決まった値を扱うとき、intやStringの定数で済ませていませんか。今回はJavaのenum(列挙型)を使って、そうしたコードを安全で読みやすくする方法を解説します。enumとは...
Java

【Java】Javaの内部クラス・匿名クラスの使い方を種類別に整理する

こんにちは、かつコーチです。Javaには4種類の「クラスの中に書くクラス」があります。今回はその使い分けと、実際に手を動かして分かった注意点を整理します。4種類の内部クラスの違いメンバ内部クラス(Inner Class)外側のクラスのインス...
Java

【Java】Javaのinterfaceデフォルトメソッド・静的メソッドを使いこなす

こんにちは、かつコーチです。今回はJava 8以降のinterfaceに追加された、デフォルトメソッドと静的メソッドを扱います。「interfaceは抽象メソッドしか持てない」という前提知識をアップデートしたい方向けの内容です。デフォルトメ...
Java

【Java】interfaceの基本を初心者向けに分かりやすく解説

こんにちは、かつコーチです。前回は抽象クラスを解説しました。今回は、抽象クラスと似ているようで役割が異なる「interface」の基本について解説します。interfaceとは?「実装すべき機能の約束事」を定義するinterface(インタ...
Java

【Java】抽象クラス(abstract)の使い方を基礎から解説

こんにちは、かつコーチです。前回はオーバーライドとポリモーフィズムを解説しました。今回は、「共通の設計だけ決めて、具体的な実装は子クラスに任せたい」というときに使う抽象クラス(abstract)について解説します。抽象クラスとは?インスタン...
Java

【Java】メソッドのオーバーライドとポリモーフィズムの違いを解説

こんにちは、かつコーチです。前回は継承の基本を解説しました。今回は、継承と組み合わせて使う「オーバーライド」と、オブジェクト指向の中核概念の1つである「ポリモーフィズム」について解説します。オーバーライドとは?親クラスのメソッドを子クラスで...
Java

【Java】継承の基本とsuperキーワードの使い方をわかりやすく解説

こんにちは、かつコーチです。ここまでクラス・オブジェクト・カプセル化を解説してきましたが、今回は複数のクラスに共通する部分をまとめられる「継承」と、セットで使うsuperキーワードを解説します。継承とは?共通部分を親クラスにまとめる仕組み継...
Java

【Java】カプセル化とgetter・setterの書き方を初心者向けに解説

こんにちは、かつコーチです。前回はコンストラクタで初期値を安全に設定する方法を解説しました。今回は、フィールドを外部から自由に触らせないようにする「カプセル化」と、そのためのgetter・setterの書き方を解説します。カプセル化とは?フ...
Java

【Java】コンストラクタの基本とthisキーワードの使い方

こんにちは、かつコーチです。前回の記事でクラスとオブジェクトの違いを解説しましたが、「オブジェクトを作るたびにフィールドを1つずつ代入するのが面倒」と感じませんでしたか?今回は、その悩みを解決するコンストラクタと、セットで登場するthisキ...
Java

【Java】クラスとオブジェクトの違いを初心者向けに徹底解説

こんにちは、かつコーチです。今回は、Javaの学習で最初につまずきやすい「クラス」と「オブジェクト」の違いについて解説します。「なんとなく分かった気がするけど、いざコードを書くと混乱する」という方は多いです。この記事を読めば、設計図と実体の...
PHP

【PHP】PHPのトレイト(trait)で複数クラスに機能を共有する方法

こんにちは、かつコーチです。前回は静的メソッド・静的プロパティ(static)について解説しました。今回でオブジェクト指向シリーズはひと区切りです。最後に扱うのは「trait(トレイト)」という、Laravelを学ぶ上でも避けて通れない仕組...
PHP

【PHP】PHPの静的メソッド・静的プロパティ(static)とは

こんにちは、かつコーチです。前回はアクセス修飾子(public / protected / private)について解説しました。今回は、オブジェクト指向でよく登場するもう1つのキーワード「static」を扱います。Laravelのコードを...
PHP

【PHP】PHPのアクセス修飾子(public/protected/private)の使い分け

こんにちは、かつコーチです。前回は継承とインターフェースについて解説しました。ここまでの記事のコード例では、プロパティやメソッドにさりげなく public というキーワードを付けてきました。今回は、この public を含めたアクセス修飾子...
PHP

【PHP】PHPの継承・インターフェースをわかりやすく解説

こんにちは、かつコーチです。前回はクラスとインスタンスの基本を扱いました。「クラスは設計図、インスタンスはその実体」という考え方には慣れてきたでしょうか。今回は、クラスをさらに便利に使うための「継承」と「インターフェース」を解説します。似た...
PHP

【PHP】PHPのオブジェクト指向入門:クラスとインスタンスの基本

こんにちは、かつコーチです。久しぶりにPHPの話題を取り上げます。前回は名前空間(namespace)とautoloadの基本を扱いました。今回からいよいよ「オブジェクト指向」に入っていきます。PHPを勉強していると、必ずどこかで「クラス」...
JavaScript

【TypeScript基礎学習3】オブジェクト指向について理解する

こんにちは、かつコーチです。今回は、プログラミング界隈でよく言われるオブジェクト指向についてです。TypeScriptでもオブジェクト指向の考え方があり、習得する上では重要になってきます。TypeScriptでは、オブジェクト指向プログラミ...