Javaにおけるオブジェクト指向プログラミングの仕組みと活用
オブジェクト指向プログラミング(OOP)の概要
オブジェクト指向プログラミングは、ソフトウェアシステムを「オブジェクト」という自律的な単位の集合としてモデル化する設計思想です。現実世界の事物や概念をオブジェクトとして表現し、それらの相互作用によってシステム全体を構築します。JavaにおいてOOPを理解する上で、中核となる3つの要素「カプセル化」、「継承」、 ...
7月19日 00:47 投稿
Kotlinのオブジェクト指向プログラミング:クラス、継承、プロパティ、インターフェース
クラス
クラスの宣言は以下のようになります。
// クラス宣言
class User { /*...*/ }
// 空のクラス
class Empty
// プライマリコンストラクタ
class User constructor(name: String) { /*...*/ }
// キーワードを省略したプライマリコンストラクタ
class User(name: String) { /*...*/ }
// プライマリコンストラクタのロジックはinitブロックに記述します
// 複数のinit ...
7月8日 23:57 投稿
Javaにおける内部クラスによる外部クラスの継承
Javaにおける内部クラスによる外部クラスの継承
Javaプログラミングにおいて、内部クラスとは他のクラス内部に定義されるクラスを指します。内部クラスは外部クラスの非公開メンバーやメソッドに直接アクセスできるだけでなく、外部クラスを継承することも可能です。内部クラスと外部クラスの関係は通常、包含関係であり、外部クラスが内部クラスのコンテナとして機能しま ...
7月6日 21:52 投稿
TypeScriptの基礎:インターフェースの活用方法
インターフェース
オブジェクトの構造と振る舞いを記述する抽象的な型です。具体的な実装を提供せず、継承可能(インターフェースはクラスと同様に継承できます)、オブジェクトの型チェックにも利用でき、複数のクラスで実装可能です。
オプションプロパティ
インターフェース内のプロパティは必須ではありません。非必須プロパティ名の後に"?"を追加するだけで ...
7月5日 16:15 投稿
Javaにおけるポリモーフィズムの理解と実践
ポリモーフィズム(多態性)とは
ポリモーフィズムは、オブジェクト指向プログラミングの核心概念の一つであり、同じインタフェースや基底クラスを通じて、異なるサブクラスの振る舞いを柔軟に扱うことを可能にします。つまり、「一つの型で複数の形を表現できる」仕組みです。
この特性により、コードの再利用性が高まり、拡張性のある設計が実現できます。基本的な実現 ...
7月3日 23:33 投稿
Java継承と抽象クラスの実践的学習
第一部分:理論知識の学習
第五章:継承と多様性
第五章の学習内容は主に七つのモジュールに分かれています:
クラス、スーパークラス、サブクラス
a. クラス継承の形式:class 新しいクラス名 extends 既存クラス名
b. 既存のクラスは:スーパークラス(superclass)、基底クラス(base class)または親クラス(parent class)と呼ばれます
新しいクラスは:サブクラス ...
7月1日 16:44 投稿
継承とポリモーフィズムの実践的な理解
インスタンスの型確認
以下のJavaコードはinstanceof演算子を使用して、オブジェクトの型を確認する方法を示しています。
public class InstanceCheckDemo {
public static void main(String[] args) {
Object obj = "Java";
System.out.println("Object型か:" + (obj instanceof Object)); // true
System.out.println("String型か:" + (o ...
6月30日 17:59 投稿
new演算子、継承、スタックとヒープ、シリアライズコピーとシャローコピー
new演算子の内部仕組み
new演算子はオブジェクトをインスタンス化し、新しいオブジェクトを返します。コンストラクタ関数内のthisはインスタンスに参照されます。
new演算子の内部プロトタイプ
var p1 = {} で新規オブジェクトを作成し、メモリ空間を確保します。
Person.call(p1) を使用して、Person関数内のthisをp1に変更します。
p1.__proto__ == Person.prototype ...
6月26日 17:55 投稿
C++における継承と多態性の実装例
ロボットペットの多態性デモ
pets.hpp
#pragma once
#include <string>
#include <iostream>
class RoboPet {
public:
RoboPet(const std::string& name);
virtual std::string vocalize() = 0;
std::string get_name() const;
private:
std::string pet_name;
};
RoboPet::RoboPet(const std::string& name) : pet_name{name} {}
...
6月25日 18:05 投稿
Javaクラスの初期化順序
継承なしの場合:
1. 実行順序
静的メンバ変数
静的コードブロック
通常のメンバ変数
通常のコードブロック
コンストラクタ
2. 要約:
静的 -> 通常
変数 -> コードブロック -> コンストラクタ
コンストラクタは最後に実行される
3. サンプルコード:
public class Parent {
private static String name = "zct" ...
6月19日 16:12 投稿