工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaオブジェクトとクラス:コアOOP概念を完全理解

Javaのオブジェクト指向サポート

Javaはオブジェクト指向言語として、以下の基本概念をサポートします:

本章では「クラス」と「オブジェクト」に焦点を当てます。

オブジェクトとは

現実世界には車、犬、人間など多数のオブジェクトが存在し、すべて状態と振る舞いを持ちます。

ソフトウェアオブジェクトも同様に、状態はフィールドに格納、振る舞いはメソッドで表現されます。メソッドがオブジェクト内部状態を操作し、オブジェクト間通信はメソッド呼び出しで行われます。

クラスとは

クラスは個々のオブジェクトを生成するための設計図(ブループリント)です。

クラス定義例

public class Dog {
  String breed;
  int age;
  String color;
  void barking() { }
  void hungry() { }
  void sleeping() { }
}

クラスに含まれる変数の種類

コンストラクタ

クラスには必ずコンストラクタがある。明示しなければJavaコンパイラがデフォルトコンストラクタを生成。新オブジェクト作成時に必ず1つ以上のコンストラクタが呼び出される。ルール:クラス名と同名、戻り値型なし、複数定義可(オーバーロード)。

コンストラクタ例

public class Puppy {
  public Puppy() { }                    // 引数なし
  public Puppy(String name) {           // 引数あり
    // パラメータ name を使用
  }
}

Javaはシングルトンクラス(インスタンス1つのみ)もサポート。

オブジェクトの生成(3ステップ)

  1. 宣言:オブジェクト型の変数宣言
  2. インスタンス化:newキーワードでオブジェクト生成
  3. 初期化:newに続けてコンストラクタ呼び出し、初期化完了

オブジェクト生成例

public class Puppy {
  public Puppy(String name) {
    System.out.println("Passed Name is :" + name);
  }
  public static void main(String[] args) {
    Puppy myPuppy = new Puppy("tommy");  // 3ステップ一度に
  }
}
Passed Name is :tommy

インスタンス変数とメソッドへのアクセス

生成したオブジェクト経由でアクセス:

/* オブジェクト生成 */
ObjectReference = new Constructor();
/* 変数アクセス */
ObjectReference.variableName;
/* メソッド呼び出し */
ObjectReference.MethodName();

アクセス例

public class Puppy {
  int puppyAge;
  public Puppy(String name) {
    System.out.println("Name chosen is :" + name);
  }
  public void setAge(int age) { puppyAge = age; }
  public int getAge() {
    System.out.println("Puppy's age is :" + puppyAge);
    return puppyAge;
  }
  public static void main(String[] args) {
    Puppy myPuppy = new Puppy("tommy");
    myPuppy.setAge(2);
    myPuppy.getAge();
    System.out.println("Variable Value :" + myPuppy.puppyAge);
  }
}
Name chosen is :tommy
Puppy's age is :2
Variable Value :2

ソースファイル宣言ルール

Javaパッケージ

クラス/インターフェースを分類・整理する仕組み。大規模開発では必須。

import文

完全修飾名(パッケージ+クラス名)を与えるとコンパイラが容易に特定可能。import文で場所を指定。例:import java.io.*;でjava_installation/java/io配下全クラスを読み込み。

ケーススタディ:Employee / EmployeeTest

2クラス構成で実践的な例を示します。

Employee.java

import java.io.*;
public class Employee {
  String name;
  int age;
  String designation;
  double salary;

  public Employee(String name) { this.name = name; }
  public void empAge(int empAge) { age = empAge; }
  public void empDesignation(String empDesig) { designation = empDesig; }
  public void empSalary(double empSalary) { salary = empSalary; }
  public void printEmployee() {
    System.out.println("Name:"+ name);
    System.out.println("Age:" + age);
    System.out.println("Designation:" + designation);
    System.out.println("Salary:" + salary);
  }
}

EmployeeTest.java

import java.io.*;
public class EmployeeTest {
  public static void main(String[] args) {
    Employee empOne = new Employee("James Smith");
    Employee empTwo = new Employee("Mary Anne");
    empOne.empAge(26);
    empOne.empDesignation("Senior Software Engineer");
    empOne.empSalary(1000);
    empOne.printEmployee();
    empTwo.empAge(21);
    empTwo.empDesignation("Software Engineer");
    empTwo.empSalary(500);
    empTwo.printEmployee();
  }
}

コンパイル・実行・出力

C:\> javac Employee.java
C:\> javac EmployeeTest.java
C:\> java EmployeeTest
Name:James Smith
Age:26
Designation:Senior Software Engineer
Salary:1000.0
Name:Mary Anne
Age:21
Designation:Software Engineer
Salary:500.0

次の章へ

次回はJavaの基本データ型と、アプリケーション開発での活用法を説明します。

Java

  1. C# クラスとオブジェクト:堅牢な OOP の基礎
  2. C++クラスとオブジェクト完全ガイド:オブジェクト指向プログラミングの実践
  3. C++フレンド関数とフレンドクラス:アクセス制御のマスター
  4. Java変数とリテラル:包括的ガイド
  5. Javaクラスとオブジェクト:実践ガイド
  6. Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
  7. Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
  8. Java抽象クラスとメソッド:包括的ガイド
  9. Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
  10. Java無名インナークラス完全ガイド:定義、構文、実践例
  11. Javaシングルトンパターン完全解説:安全な実装と活用法