Javaオブジェクトとクラス
オブジェクト指向言語としてのJava。 これは、以下の基本的な概念をサポートしています。
- 多型
- 受け継ぎます
- パッケージ
- 抽象的な
- カテゴリ
- オブジェクト
- 例
- ウェイ
- オーバーロード
このセクションでは、オブジェクトとクラスの概念に焦点を当てています。
- オブジェクト:オブジェクトがクラスのインスタンスである(オブジェクトがガールフレンドを見つけることはありません)、状態と振る舞いがあります。 尻尾を振る、と呼ばれる、食べて、というように:;行動の色、名前、品種:たとえば、犬は、その状態であるオブジェクトです。
- クラス:クラスは、オブジェクトおよび状態のクラスの振る舞いを記述したテンプレートです。
男の子と女の子のためのクラス図の下、および人工物の各クラスに固有:
Javaオブジェクト
今、私たちはオブジェクトであるかを理解しましょう。 あなたがそのように上のオブジェクト、車、犬、人、そして多くの周りを見つけるでしょう、現実の世界を見て回ります。 これらのオブジェクトはすべて、自分の状態や動作を持ちます。
例えば犬を取るために、その状態は以下のとおりです。名前、品種、色、挙動:と呼ばれるが、その尾とRANを振ります。
実際のオブジェクトを比較し、ソフトウェアオブジェクトは、それらの間に非常に類似しています。
ソフトウェアオブジェクトは状態と振る舞いを持っています。 ステート・ソフトウェア・オブジェクトは、表現の方法によって振る舞いを属性することです。
ソフトウェア開発では、物体の内部状態を操作する方法を変更するためにお互いを呼び出し、オブジェクト方法によって達成されます。
Javaクラス
クラスは、Javaオブジェクトを作成するためのテンプレートとして見ることができます。
クラスでJavaを理解するために単純なクラス定義を以下によります:
public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }
クラスには、次の種類の変数を含めることができます。
- ローカル変数:メソッド、コンストラクタ、またはステートメントブロック定義内の変数は、ローカル変数と呼ばれています。 変数を宣言した方法で初期化され、メソッドの終了後、変数は自動的に破棄されます。
- メンバー変数:クラスのメンバ変数が定義され、メソッド本体の外側変数。 オブジェクトがインスタンス化されると、この変数が作成されます。 メンバー変数は、文ブロックのクラスメソッド、コンストラクタ、および特定のクラスのメソッドにアクセスすることができます。
- クラス変数:クラスクラスで宣言された変数、本体以外の方法が、静的な型として宣言する必要があります。
クラスは、上記の例では、複数のメソッドを持つことができます:吠え()、空腹()と寝()Dogクラスです。
コンストラクタ
各クラスにはコンストラクタがあります。 あなたが明示的にクラスのコンストラクタを定義しない場合、Javaコンパイラは、クラスのデフォルトコンストラクタを提供します。
オブジェクトを作成し、少なくとも、コンストラクタと呼ばれていました。 コンストラクタの名前は、クラスが複数のコンストラクタを持つことができ、クラスと同じ名前でなければなりません。
ここでは、コンストラクタの例は次のとおりです。
public class Puppy{ public Puppy(){ } public Puppy(String name){ // 这个构造器仅有一个参数:name } }
オブジェクトを生成します
オブジェクトはクラスに基づいて作成されます。 Javaでは、新しいオブジェクトを作成するために、キーワードnewを使用します。 オブジェクトを作成するには、次の3つの手順が必要です。
- 免責事項:オブジェクト名とオブジェクト・タイプを含む、オブジェクトを宣言します。
- 例:オブジェクトを作成するための新しいキーワード。
- 初期化:オブジェクトを初期化するデフォルトコンストラクタを使用して新しいオブジェクトを作成しますが呼び出されます。
ここでは、オブジェクトを作成する例を示します。
public class Puppy{ public Puppy(String name){ //这个构造器仅有一个参数:name System.out.println("Passed Name is :" + name ); } public static void main(String []args){ // 下面的语句将创建一个Puppy对象 Puppy myPuppy = new Puppy( "tommy" ); } }
上記のプログラムは次のような結果が出力されますコンパイルして実行します。
Passed Name is :tommy
アクセスインスタンス変数とメソッド
以下のように、作成されたオブジェクトを介してメンバ変数とメンバメソッドにアクセスするには:
/* 实例化对象 */ ObjectReference = new Constructor(); /* 访问其中的变量 */ ObjectReference.variableName; /* 访问类中的方法 */ ObjectReference.MethodName();
例
次の例では、インスタンス変数にアクセスし、メンバー・メソッドを呼び出す方法を示しています。
public class Puppy{ int puppyAge; public Puppy(String name){ // 这个构造器仅有一个参数:name System.out.println("Passed Name 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" ); /* 通过方法来设定age */ myPuppy.setAge( 2 ); /* 调用另一个方法获取age */ myPuppy.getAge( ); /*你也可以像下面这样访问成员变量 */ System.out.println("Variable Value :" + myPuppy.puppyAge ); } }
上記のプログラムは次の結果を生成しコンパイルして実行します。
Passed Name is :tommy Puppy's age is :2 Variable Value :2
ソースファイルの宣言規則
このセクションの最後の部分では、ルールは、ソースファイルを宣言学びます。 あなたが1つのソースファイルに複数のクラスを定義し、インポート文とpackageステートメントがある場合、これらの規則に特別な注意を払います。
- ソースファイルが一つだけのパブリッククラスを持つことができます
- ソースファイルは、複数の非publicクラスを持つことができます
- ソースファイル名とクラス名のパブリッククラスは一貫している必要があります。 たとえば、次のソースファイルパブリッククラスのクラス名が従業員である場合、ソースファイルはEmployee.java名前を付ける必要があります。
- クラスがパッケージ内に定義されている場合、package文は、ソースファイルの最初の行でなければなりません。
- import文を含むソースファイル場合は、ステートメントは、パッケージやクラスの定義の間に配置する必要があります。 何package文がない場合、import文は、ソースファイルで最も重要であるべきです。
- インポート・パッケージ・ステートメントおよびソース・ファイルに定義されているすべてのクラスのステートメントが有効です。 同じソースファイルではなく、異なるパッケージ文の異なるクラスに。
そこに、アクセスクラスのいくつかのレベルがあり、クラスは、異なるタイプに分けることができる:抽象クラス、最終クラスなど。 これらはアクセス制御の項に記載されています。
内部クラス、匿名クラス:上記のタイプに加えて、のようないくつかの特別なカテゴリは、Javaがあります。
Javaパッケージ
パッケージは、主にクラスとインタフェースを分類するために使用されます。 あなたが開発する際に、クラスおよびインタフェースを分類する必要があるので、Javaプログラムは、クラスの数百を書くことができます。
import文
Javaでは、場合、パッケージ名、クラス名を含む、完全修飾名を与えられ、その後Javaコンパイラが簡単にソースコードやカテゴリを見つけることができます。 コンパイラがクラスを見つけることができるように、インポート文は、合理的な経路を提供するために使用されます。
たとえば、次のコマンドラインコンパイラのコマンドは、すべてのクラスのjava_installation / javaの/ ioのパスをロードします
import java.io.*;
簡単な例
従業員とEmployeeTest:この例では、2つのクラスを作成します。
まず、その中に次のコードを貼り付けテキストエディタを開きます。 Employee.javaとしてファイルを保存してください。
名前、年齢、指定及び給与:Employeeクラスは、4つのメンバ変数を持っています。 クラスは、明示的に一つのパラメータのみでコンストラクタメソッドを宣言します。
import java.io.*; public class Employee{ String name; int age; String designation; double salary; // Employee 类的构造器 public Employee(String name){ this.name = name; } // 设置age的值 public void empAge(int empAge){ age = empAge; } /* 设置designation的值*/ public void empDesignation(String empDesig){ designation = empDesig; } /* 设置salary的值*/ 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); } }
プログラムの実行はmainメソッドから始まります。 プログラムを実行するには、メインメソッドは、オブジェクトのインスタンスを作成します含まれている必要があります。
ここでは、Employeeクラスの2つのインスタンスをインスタンス化し、変数の値を設定するメソッドを呼び出し、EmployeeTestクラスです。
次のコードは、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(); } }
両方のファイルをコンパイルし、EmployeeTestクラスを実行するには、次の結果を参照することができます:
C :> javac Employee.java C :> vi EmployeeTest.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