JAVAオブジェクトクラスとオブジェクト向け


このページの更新日:2016年07月17日
前言
Javaはオブジェクト向けのプログラミング言語で、Java言語は定義クラス、メンバー変数、メソッドなどの基本機能を提供しています.クラスはカスタムデータ型と考えられます.クラスを使用して変数を定義することができます.クラス定義を使用する変数はすべて参照変数である.それらはクラスのオブジェクトに参照される.クラスは客観世界のあるクラスのオブジェクトの共通の特徴を記述するために用いられる.オブジェクトはクラスの具体的な存在である.Javaはクラスのコンストラクタを使用してクラスのオブジェクトを作成する.
Javaはオブジェクト向けの3つの特徴もサポートする:パッケージ/継承/マルチステートJavaはprivate/protected/publicの3つのアクセス制御修飾子を提供して良好なパッケージを実現する.extendsキーワードを提供してサブクラスに親を継承させる.
子クラスは親クラスを継承することで親クラスのメンバー変数とメソッドを継承することができる.アクセス制御が許可されると,子クラスインスタンスは親クラスで定義されたメソッドを直接呼び出すことができる.継承はクラス多重化を実現する重要な手段である.
継承関係を用いて多重化を実現する場合、サブクラスオブジェクトは親変数に直接値を付与することができる.この変数は多態性を有し、プログラミングをより柔軟にすることができる.
コンストラクタはクラスインスタンスの初期化操作に用いる.コンストラクタはリロードをサポートする.複数のリロードされたコンストラクタに同じ初期化コードが含まれている場合,これらの初期化コードを通常の初期化ブロックに配置して完了する.クラス初期化フェーズが実行される.継承ツリーのクラスのいずれかを初期化する必要がある場合,クラスのすべての親を同時に初期化します.
クラスの定義
オブジェクト向けのプログラミングには2つの重要な概念がある:クラス(class)とオブジェクト(objectはインスタンス、instanceとも呼ばれる).そのうちクラスはあるオブジェクトの抽象であり、クラスをある概念と理解することができる.オブジェクトはまだ具体的に存在する実体である.この概念から見ると、日常的に言う人は、実は人間のインスタンスであり、人間ではない.
Java言語はオブジェクト向けのプログラミング言語であり、クラスとオブジェクトはオブジェクト向けの核心内容である.Java言語はクラスの作成とオブジェクトの作成に対する文法サポートを提供する.Java言語で定義されたクラスの簡単な文法は以下の通りである.
[   ] class   
{
              ...
             ...
           ...
}

上記の文法形式では、修飾子はpublic/final/abstractまたは省略して書かないことができる.(修飾子の役割は後で説明する).クラス名は1つ以上の意味のある単語で接尾辞されなければならず、各単語の頭文字は大文字で、他のアルファベットはすべて小文字である.単語と単語の間には区切り記号は使用しない.
クラスを定義するには、コンストラクタ/メンバー変数/メソッドの3つの最も一般的なメンバーを含むことができます.3つのメンバーはゼロまたは複数を定義することができます.3つのメンバーが書かない場合は、空のクラスを定義し、実際の意味はありません.
クラス内で定義各メンバーの順序は任意であり、各メンバー間で相互に呼び出すことができるが、static修飾されたメンバーはstatic修飾されていないメンバーにアクセスできないことを指摘する必要がある.
メンバー変数は、クラスまたはクラスのインスタンスに含まれるステータスデータを定義するために使用される.メソッドは、クラスまたはクラスのインスタンスの動作特徴または機能実装を定義するために使用される.コンストラクタは、クラスのインスタンスを構築するために使用される.Java言語はnewキーワードによってコンストラクタを呼び出し、クラスのインスタンスを返す.
コンストラクタはクラスがオブジェクトを作成する根本的な方法です.クラスにコンストラクタがない場合、このクラスは通常インスタンスを作成できません.そのため、Java言語は、プログラマがクラスにコンストラクタを記述していない場合、システムはクラスにデフォルトのコンストラクタを提供します.プログラマがクラスにコンストラクタを提供すると、システムはクラスにコンストラクタを提供しません.
メンバー変数を定義する構文の形式は次のとおりです.
[   ]          [   ];

メンバー変数の構文フォーマットの定義の詳細は、次のとおりです.
  • 修飾子:省略してもよいし、public/protected/private/static/finalでもよい.public/protected/privateの3つは最大1つしか選択できないが、後のstatic/finalと組み合わせてメンバー変数を修飾することができる.
  • タイプ:タイプはJava言語で許可されている任意のデータ型であり、前に述べた基本タイプと現在紹介されている参照タイプを含む.
  • メンバー変数名:メンバー変数名は1つ以上の意味のある単語で接尾辞されるべきで、最初の単語の頭文字は小文字で、後ろの各単語の頭文字は大文字である.例えば、helloWorld.単語と単語の間には区切り記号は使用しない.
  • デフォルト:メンバー変数を定義するには、デフォルト値を指定するか、書かないかを指定します.
  • 定義メソッドの構文フォーマットは次のとおりです.
    [   ]            (    )
    {
        //                   
    }

    メソッド構文フォーマットの詳細を定義します.
  • 修飾子:省略してもよいし、public/protected/private/static/final/abstractであってもよい.public/protected/privateの3つは最大1つである.abstractとfinalの2つは最大1つである.これらはstaticと組み合わせて修飾することができる.
  • メソッド戻り値タイプ:戻り値タイプはJava言語で許可されている任意のデータ型であってもよい.基本タイプと参照タイプを含む.メソッドの戻り値タイプが宣言されている場合、メソッド内に有効なreturn文が必要です.この文は変数または式を返します.この変数または式のタイプは、ここで宣言するタイプと一致する必要があります.それ以外に、メソッドに戻り値がない場合は、voidを使用して戻り値がないことを宣言する必要があります.
  • メソッド名:メソッド名の命名規則はメンバー変数の命名規則と同じである.
  • パラメトリックリスト:このメソッドで許容可能なパラメータを定義するために使用されます.パラメトリックリストは、ゼログループから複数グループ[パラメータタイプパラメトリック名]までを組み合わせたものです.複数グループのパラメータの間には、英語のカンマで区切られています.パラメトリックタイプとパラメトリック名の間には、英語のスペースで区切られています.定義メソッドでパラメトリックリストが指定されると、このメソッドを呼び出すには、対応するパラメータ値を入力する必要があります.すなわち、メソッドを呼び出す人は、パラメータに値を割り当てる責任があります.
  • .
    方法体の中の複数の実行可能な文の間に厳格な実行順序がある方法体の前の文はいつも先に実行する.
    staticは、メソッド/メンバー変数などのメンバーを修飾するために使用できる特殊なキーワードです.static修飾のメンバーは、クラス自体に属し、クラスの単一のインスタンスに属していないことを示します.そのため、static修飾のメンバー変数とメソッドをクラス変数/クラスメソッドと呼びます.static修飾を使用しないメソッド/メンバー変数は、クラスの単一のインスタンスに属します.このクラスに属するものではないので、static修飾を用いないメンバー変数とメソッドをインスタンス変数/インスタンスメソッドと呼ぶことが多い.
    staticの英文直訳は静的な意味であるため.static修飾のメンバー変数と方法を静的変数と静的方法と呼ぶこともある.static修飾を用いないメンバー変数と方法を非静的変数と非静的方法と呼ぶ.静的メンバーは直接非静的メンバーにアクセスできない
    コンストラクタの構文フォーマットの定義
    [   ]     (    )
    {
        //                     
    }

    コンストラクタ構文フォーマットの詳細を定義します.
  • 修飾子:省略してもよいしpublic/protected/privateのいずれか
  • でもよい
  • コンストラクタ名:コンストラクタ名はクラス名と同じでなければなりません
  • パラメータリスト:定義方法パラメータリストのフォーマットと全く同じ.
  • なお、コンストラクタは戻り値のタイプを定義することも、voidを使用してコンストラクタに戻り値がないことを宣言することもできない.コンストラクタが戻り値のタイプを定義したり、voidを使用してコンストラクタに戻り値がないことを宣言したりする.コンパイルは間違っていないが.Javaはこのいわゆるコンストラクタを方法として処理する-コンストラクタではない.
    次に、以前のコンテンツと組み合わせてクラスを定義します.
    public class Person
    {
         
        //           
        public String name;
        public int age;
    
        //       say  
        public void say(String content)
        {
            System.out.println(content);
        }
    }

    上のPersonクラスのコードにはコンストラクタが定義されていません.定義されていないとJavaはコンストラクタにデフォルトで与えられます.しかし、肉眼では見えません.同時に、システムが提供するコンストラクタにはパラメータがありません.
    クラスを定義すると、次のように使用できます.Javaクラスの大まかな役割は次のとおりです.
  • 定義変数
  • オブジェクト
  • を作成する
  • クラスメソッドまたはアクセスクラスのクラス変数
  • を呼び出す
    次に、クラスを使用して変数を定義し、オブジェクトを作成する方法について説明します.
    オブジェクトの生成と使用
    オブジェクトを作成する根本的な方法はコンストラクタを使用することです.newキーワードでクラスのコンストラクタを呼び出すと、このクラスのインスタンスを作成できます.PersonクラスとPersonTestクラスを書きます.
    //  Person      Person     
    Person p;
    //   new       Person      ,      Person   
    p = new Person();

    上記のコードは、次のように簡単に書くことができます.
    //   p        p     
    Person p = new Person();

    Javaオブジェクトは、オブジェクトを作成すると使用できます.Javaオブジェクトには、次のような役割があります.
  • アクセスオブジェクトのインスタンス変数
  • オブジェクトを呼び出す方法
  • アクセス権が許可する場合、クラスで定義されたメソッドとメンバー変数は、クラスまたはインスタンスによって呼び出すことができる.クラスまたはインスタンスのアクセス方法またはメンバー変数の構文は、クラス.クラス変数/メソッドまたはインスタンスである.インスタンス変数/メソッドは、クラスまたはインスタンスのメンバー変数またはメソッドにアクセスするためのプライマリ・コールである.
    ここで、static修飾のメソッドとメンバー変数は、クラスで呼び出すことも、インスタンスで呼び出すこともできます.static修飾のメソッドやメンバー変数を使用せずに、インスタンスでのみ呼び出すことができます.次のコードはPersonインスタンスでPersonのメンバー変数とメソッドを呼び出します.
    //   p   name     ,         
    p.name = "  ";
    //   p   say()   ,    say()           
    //               
    p.say("        ");
    //     p   name     
    System.out.println(p.name);

    上記のコードではPersonインスタンスによってsay()メソッドが呼び出され、メソッドを呼び出す際にメソッドのパラメータ値として値を割り当てる必要がある.従って、この行のコードでPersonオブジェクトのsay()メソッドを呼び出す場合、say()メソッドに対してパラメータ値として文字列を入力しなければならない.この文字列はcontentパラメータに伝達される.
    ほとんどの場合、クラスを定義するのはそのクラスのインスタンスを繰り返し作成するためです.同じクラスの複数のインスタンスは同じ特徴を持っています.クラスは複数のインスタンスを定義する共通の特徴です.ある角度から見ると、複数のインスタンスの特徴が定義されています.そのため、クラスは具体的な存在ではなく、インスタンスが具体的な存在です.完全にこのように言えます.あなたは人間ではありません.私も人間ではありません.私たちは人間という類の例にすぎません.