ホームページ  >  記事  >  Java  >  Java のオブジェクト指向機能の概要

Java のオブジェクト指向機能の概要

王林
王林転載
2020-02-05 17:54:532272ブラウズ

Java のオブジェクト指向機能の概要

Java の 3 つの主要なオブジェクト指向機能:

カプセル化、継承、ポリモーフィズム。

1. カプセル化

クラス情報をクラス内に隠し、外部プログラムによる直接アクセスを許可しません。代わりに、非表示の情報は、次のメソッドによって実装されます。クラス、操作、およびアクセス。

カプセル化の実装手順:

属性の可視性を変更: private に設定

ゲッター/セッター メソッドを作成: 属性の読み取りおよび書き込み用

ゲッター/セッター メソッドに属性制御ステートメントを追加します: 属性値の正当性を判断します

(推奨学習: Java ビデオ チュートリアル)

変更private を使用した属性の可視性 (例:

//表示读取该方法中的screen
public float getScreen{
	return screen;
    }
 //有viod无返回值,变量名.属性=值,就不能直接调用可以通过变量名.getScreen()来实现
public viod setScreen(float newScreen){
	screen = newscreen;
	}

変数名。属性 = 値は直接呼び出すことはできません。変数名.getScreen() を通じて実現できます)。

パッケージの機能:

1.Java ファイルの管理

2.同じ名前のファイルの競合を解決

Definition パッケージ: package

パッケージ名 注: Java ソース プログラムの最初の行に配置する必要があります。パッケージ名は「.」で区切ることができます。例: com.imooc.MyClassJava では、パッケージはすべて小文字です。

Java のアクセス制御修飾子

public、default、protected、private

public: public、すべてのクラスにアクセス可能

default: デフォルトの修飾子、同じパッケージ内でのアクセス

protected: 保護されたタイプ。同じパッケージ内のアウトソーシングされたクラスで、このクラスを継承するクラスは

private: プライベート クラス、このクラスのみがアクセスできます

final、finally、finalize (継承内)

最後: 修飾子。この修飾子によって変更されたクラスは継承できません。この修飾子によって変更された変数は変更できず、読み取りのみ可能です。この修飾子によって変更されたメソッドは使用のみ可能、オーバーロード可能、および上書きできません。この変更はシンボルを変更できません抽象クラス。

finally: 例外をキャッチした後のクリーンアップ操作

finalize: メソッド。主に GC がオブジェクトを削除する前に、最初にオブジェクトの Finalize メソッドを呼び出して、オブジェクトが参照されているかどうかを確認します

Java のこのキーワード

//原来手动输入
public void setScreen( float newScreen){
   screen = newScreen;
   }
// 用eclips 自动生成的是
public void setScreen( float newScreen){
  this.screen = screen;
  }

this.Attribute: 現在のオブジェクトのプロパティを操作します

this.Method: 現在のオブジェクトのメソッドを呼び出します

Ecilipse は、setter メソッドと getter メソッドを直接生成し、このキーワードを追加できます。

#このキーワードは、メンバー変数またはメンバー メソッドの静的メンバーを呼び出します。this および super キーワードは静的メソッドでは使用できません。同時に、クラスへの参照を返し、コンストラクターを呼び出すこともできます

Java の静的内部クラス

静的内部クラスは、静的に変更された内部クラスです。この種の内部クラスの特徴は次のとおりです:

1. 静的内部クラス外部クラスに直接アクセスすることはできません。非静的メンバーですが、新しい外部クラス () を通じてアクセスできます。メンバー。

2. 外部クラスの静的メンバーが内部クラスのメンバーと同じ名前を持つ場合、「クラス名.静的メンバー」を通じて外部クラスの静的メンバーにアクセスできます。外部クラスのメンバーは内部クラスのメンバーと同じ名前を持ちます。 異なる場合は、「メンバー名」を使用して外部クラスの静的メンバーを直接呼び出すことができます。

3. static 内部クラスのオブジェクトを作成する場合、外部クラスのオブジェクトは必要なく、直接内部クラスのオブジェクト名 = new inner class(); を作成することができます。

2. 継承

継承の概念: クラス間の関係です。

継承の利点:

1) サブクラスは親クラスのすべてのプロパティとメソッドを持ちます (プライベートな変更は無効です)

2) コードの再現を実装します

文法規則: class subclass extendsparent class { }

メソッドの書き換え:

サブクラスが親クラスの継承に満足していない場合は、書き換えます。独自のコンテンツであり、書き換え後、サブクラス メソッドが最初に呼び出されます。

文法規則:

戻り値、型、メソッド名、パラメーターの型番号は、親クラスの統合メソッドと同じで、オーバーライドと呼ばれます。

初期化シーケンスを継承します:

親クラスの属性の初期化>親クラスの構築メソッド>サブクラスの属性の初期化>サブクラスの構築メソッド 0

スーパー キーワード:

はオブジェクト内で使用され、親クラス オブジェクトを表すことができます。

親クラスの属性へのアクセス: super.age;

親クラスへのアクセス方法: super.eat();

super の適用:

サブクラスの構築メソッド中に、親クラスの構築メソッドを呼び出す必要があります。

サブクラスのコンストラクターが親クラスのコンストラクターを明示的に呼び出さない場合、システムはデフォルトで親クラスの引数なしのコンストラクターを呼び出します。

コンストラクターを明示的に呼び出す場合、それはサブクラスのコンストラクターの最初の行になければなりません。

サブクラスのコンストラクターが親クラスのコンストラクターを明示的に呼び出しておらず、親クラスにパラメーターなしのコンストラクターがない場合、コンパイル エラーが発生します。

オブジェクト クラス:

どのクラスが継承されるかを識別しないことは、オブジェクト クラスの

toString() メソッドを継承することと同じです:

toString() メソッドが Object クラスに定義されている場合に返されるオブジェクトのハッシュ コード (オブジェクト アドレス文字列)

toString() メソッドをオーバーライドすることでオブジェクトを表現できます属性

equals() メソッド:

比較は、オブジェクト参照が同じメモリ アドレスを指しているかどうかです。注: 2 つのオブジェクトを比較する場合、equals() メソッドは適用できません。新しいオブジェクトが作成されると、メモリ内に新しいストレージ アドレスが作成されます。したがって、オブジェクトの属性が一致していても、それらは等しくありません。オブジェクトの特定の属性値が同じになるようにするには、「equals() メソッドを記述します」を繰り返す必要があります。

getClass() を比較して、クラス オブジェクトを返します。

getClass() はクラス オブジェクトを返します: クラスを説明するコード情報です。クラスの属性は、どれ、型、変数名、メソッド名、さらに重要なのはコードです。クラスの情報。

オブジェクト名を作成し、クラスのオブジェクトを返します。

オブジェクトの属性値情報、またはオブジェクト データの情報に注目します

3. ポリモーフィズム

ポリモーフィズム: オブジェクトのさまざまな形式を指し、主に参照ポリモーフィズムとメソッド ポリモーフィズムに分けられます。

継承はポリモーフィズムの基礎です。子クラスと親クラスには継承関係が必要であることを忘れないでください。

ポリモーフィック機能:

1参照多態性

親クラス参照は、このクラスのオブジェクトを指すことができます。 Animal obj1 = new Animal();

親クラス参照は、サブクラス オブジェクト Animal obj2 = new Dog を指すことができます。 ();

しかし、サブクラスの参照を使用して親クラス オブジェクトを指すことはできません Dog obj3 = new Animal(); //エラー

2. メソッド多態性

クラス Animal メソッドで Eat() を定義し、ステートメントを出力します (動物には食べる能力があります); サブクラス Dog の Eat() メソッドを書き換えて、ステートメントを出力します (犬は肉を食べる); 次に、メイン関数でテストクラスの場合、obj1.eat() の場合は親クラスのメソッドが呼び出され、obj2 を使用して Eat() メソッドの呼び出しが行われる場合は、サブクラスのメソッドが呼び出されます。

親クラス Animal を継承するサブクラス Cat を作成するが、継承された Eat() メソッドが Cat でオーバーライドされないなど、別の状況もあります。次に、テストの main 関数でサブクラスを作成します。 class Object, Animal obj3 = new Cat(); and then call obj3.eat(); すると、結果として、サブクラスは親クラスのメソッドを継承します(出力結果:動物は食べる能力を持っています)。

最後の特殊なケースでは、ポリモーフィックな機能は使用できません。出力ステートメント (犬はドアを監視する能力を持っています) を含む固有のメソッド public void watchDoor() をサブクラスに追加すると、次のようになります。テスト クラスのメイン関数 (最初にオブジェクト Animal obj2 = new Dog() を定義する必要があります) では、obj2.watchDoor() を使用できません。つまり、親の参照を通じてサブクラスのメソッドを呼び出すことはできません。クラス。

おすすめの関連記事とチュートリアル: Java 入門チュートリアル

以上がJava のオブジェクト指向機能の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。