Object-oriented programming System(Oops)は、データとメソッドを含む”オブジェクト”の概念に基づくプログラミングパラダイムです。 オブジェクト指向プログラミングの主な目的は、プログラムの柔軟性と保守性を高めることです。 オブジェクト指向プログラミ あなたはどんな難しい理解おっとの概念に直面しないように、私たちは詳細におっとの各機能をカバーします。,
OOPs概念–目次
- オブジェクトとは
- クラスとは
- Javaのコンストラクタ
- オブジェクト指向プログラミング機能
- 抽象化
- カプセル化
- 継承
- ポリモーフィズム
- 抽象クラスとメソッド
- Javaのインタフェース
オブジェクトとは何ですか
オブジェクト:データとその動作のバンドルです(しばしばメソッドとして知られています)。
オブジェクトには二つの特徴があります:状態と振る舞いがあります。,
状態と動作の例
例1:
オブジェクト:ハウス
状態:アドレス、色、エリア
動作:オープンドア、クローズドア
だから、私は家の状態と動作に基づいてクラスを書かなければならなかった場合。 状態はインスタンス変数として、動作はクラスのメソッドとして表すことができます。 このガイドの次のセクションでは、クラスの作成方法について説明します。
class House { String address; String color; double are; void openDoor() { //Write code here } void closeDoor() { //Write code here } ... ...}
注:上記で見たように、オブジェクトの状態と動作は、それぞれクラス内の変数とメソッドで表すことができます。,
オブジェクトの特性:
抽象化とカプセル化を理解するのが難しい場合は、このガイドの次のセクションでこれらのトピックを詳細に説明し
- 抽象化
- カプセル化
- メッセージパッシング
抽象化:抽象化は、”関連する”データのみを表示し、ユーザーからオブジェクトの不要な詳細を”隠す”プロセスです。
カプセル化:カプセル化は、単にオブジェクトの状態(フィールド)と動作(メソッド)を結合することを意味します。 クラスを作成している場合は、カプセル化を行っています。,
メッセージ渡し
単一のオブジェクト自体はあまり役に立たないかもしれません。 アプリケーションには多くのオブ あるオブジェクトは、そのオブジェクトに対してメソッドを呼び出すこと これは、メソッド呼び出しとも呼ばれます。 以下の図を参照してください。
おっとコンセプトのクラスとは
クラスは、好きなだけオブジェクトを作成できるブループリントと見なすことができます。 たとえば、Website
というクラスがあり、二つのデータメンバー(フィールド、インスタンス変数、オブジェクト状態とも呼ばれます)を持ちます。, これは単なる青写真であり、webサイトを表すものではありませんが、これを使用してwebサイトを表すWebサイトオブジェクト(またはインスタンス)を オブジェクトを作成しながら、コンストラクタを使用してオブジェクトに別々のプロパティを
出力:
beginnersbook 5google 18
コンストラクタとは何ですか
コンストラクタはメソッドのように見えますが、実際にはメソッドではありません。 名前はクラス名と同じで、値は返されません。, 上記で共有したほとんどすべてのプログラムでこのステートメントを見たことがあります。
MyClass obj = new MyClass();
このステートメントの右側を見ると、クラスmyClass
のデフォルトコンストラクタを呼び出して新しいオブジェクト(またはインスタンス)を作成します。
我々はまた、コンストラクタ内のパラメータを持つことができます。,
コンストラクタの例
出力:
Chaitanya 30Steve 56
オブジェクト指向プログラミング機能
これらの四つの機能は、Javaでのオブジェクト指向プログラミングを理解するために学ぶ必要がある主なOOPs概念です
抽象化
抽象化は、あなたが唯一のプロセスを表示するプロセスです”関連する”データおよびオブジェクトの不要な詳細をユーザーから”隠す”。, たとえば、オンラインで銀行口座にログインするときは、user_idとパスワードを入力してloginを押し、loginを押したときに何が起こるか、入力データがサーバーに送られる方法、検証される方法は、すべてあなたから離れて抽象化されます。 ここでそれについての詳細を読む:Javaでの抽象化。
カプセル化
カプセル化は、単にオブジェクトの状態(フィールド)と動作(メソッド)を一緒にバインドすることを意味します。 クラスを作成している場合は、カプセル化を行っています。,
Javaでのカプセル化の例
方法
1)インスタンス変数をプライベートにして、クラスの外部から直接アクセスできないようにします。 これらの変数の値を設定および取得できるのは、クラスのメソッドを介してのみです。2)クラス内にgetterメソッドとsetterメソッドがあり、フィールドの値を設定および取得します。
出力:
No Of Employees: 5613
クラスEncapsulationExample
クラスEmployeeCount
のオブジェクトを使用しているクラスEmployeeCount
NoOfEmployeesを直接取得できません。, 値を設定して取得するには、同じクラスのsetterメソッドとgetterメソッドを使用する必要があります。
だから、javaプログラミングのカプセル化の利点は何ですか
まあ、ある時点で、あなたはクラスEmployeeCountの実装の詳細を変更したい場合は、自由にそれを使用しているクラスに影響を与えることなく、そうすることができます。
継承
あるクラスが別のクラスのプロパティと機能を取得するプロセスを継承と呼びます。, 継承はコードの再利用性の考え方を提供し、各サブクラスはそれに固有の機能のみを定義し、残りの機能は親クラスから継承できます。
- 継承は、共通のデータメンバーとメソッドを拡張することによって、既存のクラスに基づいて新しいクラスを定義するプロセスです。
- 継承により、コードの再利用が可能になり、javaアプリケーションの再利用性が向上します。
- 親クラスは基本クラスまたはスーパークラスと呼ばれます。 基本クラスを拡張する子クラスは、派生クラスまたはサブクラスまたは子クラスと呼ばれます。,注:継承の最大の利点は、基本クラスのコードを子クラスで書き直す必要がないことです。
基本クラスの変数とメソッドは、子クラスでも使用できます。
構文:Javaでの継承
クラスを継承するには、extendsキーワードを使用します。 ここで、クラスAは子クラスであり、クラスBは親クラスです。
class A extends B{}
継承例
この例では、親クラス
Teacher
と子クラスMathTeacher
があります。,MathTeacher
クラスでは、現在のクラスに既に存在する同じコードを記述する必要はありません。 ここでは、すべての教師に共通の大学名、指定、does()メソッドを持っているため、MathTeacherクラスはこのコードを記述する必要はなく、共通のデータメンバーとメソッドはTeacher
クラスから継承することができます。,出力:
BeginnersbookTeacherMathsTeaching
注:マルチレベル継承はJavaでは許可されていますが、多重継承は許可されていません
継承の種類:
単一継承:クラスが別のクラスを拡張する子クラスと親クラスの関係を指します。マルチレベル継承:クラスが子クラスを拡張する子クラスと親クラスの関係を指します。 例えば、クラス張クラスBクラスBクラス張C.,
階層的継承:複数のクラスが同じクラスを拡張する子クラスと親クラスの関係を指します。 たとえば、クラスBはクラスAを拡張し、クラスCはクラスAを拡張します。
多重継承:子クラスが二つの親クラスを持っていることを意味し、複数のクラスを拡張する一つのクラスの概念を指します。 Javaは多重継承をサポートしていません。
Small Talk、Java、C#などの新しいOO言語のほとんどは、多重継承をサポートしていません。 C++では多重継承がサポートされています。,
Polymorphism
Polymorphismは、さまざまな方法で単一のアクションを実行できるオブジェクト指向プログラミング機能です。 たとえば、
Animal
メソッドanimalSound()
を持つクラスAnimal
クラスを拡張する動物クラスがわからないため、このメソッドを実装することはできません。, したがって、このメソッドを次のように抽象化します。public abstract class Animal{ ... public abstract void animalSound();}
ここで、
Dog
とLion
Animal
クラスを拡張する二つの動物クラスがあるとします。 そこで実装の詳細を提供することができます。public class Lion extends Animal{... @Override public void animalSound(){ System.out.println("Roar"); }}
および
public class Dog extends Animal{... @Override public void animalSound(){ System.out.println("Woof"); }}
すべてのサブクラスに共通のアクションがありましたが、
animalSound()
しかし、同じアクションを行うさまざまな方法がありました。, これは多態性(異なる方法で単一のアクションを実行できる機能)の完璧な例です。多型のタイプ
1)静的多型
2)動的多型静的多型:
コンパイラ時に解決される多型は静的多型として知られています。 法過負荷できるとして静的多型例です。
メソッドのオーバーロード:これにより、署名が異なるクラスに同じ名前の複数のメソッドを持つことができます。,出力:
aa 10
私はメソッドのシグネチャを言うとき、私は二つのメソッドが同じ名前、同じパラメータを持っており、異なる戻り値の型を持っている場合、たとえば、メソッドの戻り値の型について話していません、これは例をオーバーロード有効なメソッドではありません。 このまま捨てるとコンパイルエラー.
動的ポリモーフィズム
動的メソッドディスパッチとしても知られています。 動的ポリモーフィズムは、オーバーライドされたメソッドへの呼び出しが実行時に解決されるプロセスです。,
例
出力:
Woof
クラス、子クラスと親クラスの両方が同じメソッドを持っているため
animalSound
。 どのメソッドが呼び出されるかは、実行時にJVMによって決定されます。さらにいくつかのオーバーライドの例:
IS-A&HAS-A関係
車は車であり、HAS-Aライセンスです。
public class Vehicle{ }public class Car extends Vehicle{ private License myCarLicense;}
おっと概念の抽象クラスとメソッド
抽象メソッド:
1)宣言されているメソッドしかし定義されていない。 メソッドシグネチャのみ本体なし。,
2)抽象キーワードを使用して宣言
3)例:abstract public void playInstrument();
5)クラスを継承するクラスに強制のいくつかの種類を置くために使用される抽象メソッド 継承するクラスは、親クラスのすべての抽象メソッドの実装を提供する必要があります。
6)これらは抽象クラスにすることはできません- コンストラクタ
- 静的メソッド
- プライベートメソッド
- “final”と宣言されているメソッド
抽象クラス
抽象クラスは、メソッドのアウトラインを示しますが、必ずしもすべてのメソッドを実装しているわけではありません。,abstract class A{ abstract void myMethod(); void anotherMethod(){ //Does something }}
注1:基本クラスのすべてのメソッドを実装することが困難なシナリオがあります。 このようなシナリオでは、基本クラスを抽象クラスとして定義することができ、この基本クラスは、それ自体では完全ではない特別な種類のクラスであることを示します。
抽象基底クラスから派生したクラスは、抽象クラスに実装されていない(抽象であることを意味する)メソッドを実装する必要があります。注2:抽象クラスをインスタンス化できないため、抽象クラスのオブジェクトを作成することはできません。, このクラスを使用するには、この抽象クラスを拡張する別のクラスを作成する必要があります抽象メソッドの実装を提供し、その子クラスのオブジェクトを使用して、非抽象親クラスメソッドと実装されたメソッド(親で抽象であったが子クラスで実装されたもの)を呼び出すことができます。注3:子クラスが親クラス(抽象クラス)のすべての抽象メソッドを実装していない場合、子クラスは抽象クラスと宣言する必要があります。,
抽象クラスとメソッドの例
ここでは、抽象メソッドanimalSound()を持つ抽象クラスAnimalを持っています。animalサウンドは動物によって異なるため、すべての子クラスがこのメソッドをオーバーライドして独自の実装の詳細を与えなければならないため、このメソッドに実装を与えることに意味はありません。 だから私たちはそれを抽象的にしました。
今、各動物は音を持っている必要があります,このメソッドを抽象作ることにより、我々はこのメソッドに実装の詳細を与えるために、子クラスにそれ こうすれば私達はあらゆる動物に音があることを保障する。,出力:
Woof
Javaのインターフェイス
インターフェイスは、interfaceキーワードを使用して宣言することができるクラスの青写真です。 インターフェースのみの定数および抄録方法(メソッドだけで署名せん。のような抽象クラス、インターフェイスできませんのインスタンスが生成され、できるだけ実施する授業の延長によるその他のインタフェース. インターフェイスは、Javaで完全な抽象化を実現する一般的な方法です。,
注:
- Javaは多重継承をサポートしていませんが、クラスは複数のインターフェイスを実装できます。
- インターフェイスは抽象クラスに似ていますが、抽象メソ,
- インターフェイスは、キーワードclassの代わりにinterfaceキーワードを使用して作成されます
-
implements
インターフェイスを実装するときにキーワード(extendsキーワードでクラスを拡張するのと同様)
Interface:Syntax
class ClassName extends Superclass implements Interface1, Interface2, ....
インターフェイスの例:
注意:
- インターフェイス内のすべてのメソッドは暗黙的にパブリックで抽象です。 各メソッドの前にキーワード
abstract
を使用することはオプションです。 - インターフェイスには最終変数を含めることができます。,
- クラスは他のクラスのみを拡張できますが、任意の数のインターフェイスを実装できます。
- クラスがインターフェイスを実装するとき、それはインターフェイスのすべての抽象メソッドの定義を与えなければならない、そうでなければ、抽象クラスとして宣言することができます。
一般化と特殊化:
OOPsで継承の概念を実装するためには、基本クラスを考え出すために、まず異なるクラス間の類似点を特定する必要があります。,異なるクラス間の類似点を特定するこのプロセスは、一般化と呼ばれます。 一般化は、二つ以上のクラスから共有特性を抽出し、それらを一般化されたスーパークラスに組み合わせるプロセスです。 共有特性は、属性またはメソッドです。
一般化とは対照的に、特殊化とは既存のクラスから新しいサブクラスを作成することを意味します。 特定の属性またはメソッドがクラスの一部のオブジェクトにのみ適用されることが判明した場合、サブクラスを作成できます。,
アクセス指定子
さて、あなたは私が上で共有している例でパブリック、プライベートキーワードを見ている必要があります。 データメンバー、メソッド、またはクラスのスコープを決定するため、アクセス指定子と呼ばれます。
javaには四つのタイプのアクセス指定子があります。
public:すべての人がアクセスできます。 その他のオブジェクトのアクセスもこの委員は、変数または機能です。
private:他のオブジェクトからアクセスできません。 個人会員だけがアクセス可能に同じクラスです。 オブジェクトにおいてのみ利用あるいは宣言しています。,
protected:保護された変数のスコープは、それを宣言するクラス内と、クラスから継承するクラス内にあります(スコープはクラスとサブクラスです)。
デフォルト:スコープはパッケージレベル。 アクセス指定子について言及していない場合はdefaultとみなされるため、明示的にdefaultに言及する必要はありません。,次のチュートリアルで何を学びますか
ここではほとんどすべてのOOPsの概念をカバーしましたが、このガイドで学んだことは簡単ですが、これらのトピックは幅広く、例の助けを借りてこれらのトピックを詳細に学ぶことができます。 私は次のチュートリアルで例や図と一緒に詳細にそれぞれ、すべてのトピックをカバーしている理由です。
次のチュートリアルを逐次的に読むにはどうすればよいですか? それを行うにはいくつかの方法があります–1)チュートリアルのリンクは、左側のサイドバーに提供されています。,
2)チュートリアルへのすべてのリンクを逐次的に持っているメインのjavaチュートリアルページに移動します。
あなたはこれらのおっと概念を理解する任意の難しさを見つけた場合は、以下のコメントをドロップし、私はできるだけ早くあなたに戻って取得