オブジェクト指向とは何ですか?
オブジェクトオブジェクト、オリエンテット...志向、プログラミングプログラミング
OPとして省略されたプログラミングにオブジェクトを使用するオブジェクト指向の手段。
SPとOOPの比較
オブジェクト指向のカプセル化と継承多型の3つの主要な原則
物体
オブジェクトは、オブジェクト指向プログラミングの中核部分であり、明確に定義された状態と行動を持つ実際の特定のエンティティです。
オブジェクトは、実際には「データ」と「関数」のカプセルです。
データは、「属性」または「メンバーデータ」とも呼ばれる独自のステータスを表します。
関数は、「メソッド」または「メンバー関数」とも呼ばれる独自の関数を表します。
親切
世界をよりよく理解するために、人々は現実の生活の中で物事(オブジェクト)をカテゴリーに分けます。
同じカテゴリのものには常にいくつかの共通点があります。
クラスは、共通の特性と行動を持つエンティティを定義します。
クラスは、同じプロパティと動作を持つオブジェクトのグループのコレクションです。
財産
物事の特性は、クラスの変数によって表されます。
各オブジェクトの各プロパティには、特定の値があります。
属性名は、クラスのすべてのオブジェクトによって共有されます。
オブジェクトまたはエンティティが所有する機能は、クラスで表されたときに属性と呼ばれます
方法
物事の行動と行動は、クラスの関数によって表されます。
各オブジェクトには同じアクションと動作があります。
オブジェクトによって実行されるアクションは、クラス内のメソッドとして表されます。
クラスとオブジェクトの違い
クラスは、エンティティを記述するために使用される「テンプレート」または「プロトタイプ」です。
オブジェクトは実際のエンティティであり、各オブジェクトはクラスの具体的なインスタンスです。
クラスは、オブジェクトのすべてのプロパティと方法を定義するために使用され、同じクラスのすべてのオブジェクトには同じ特性と操作があります。
クラスは製品を生産する金型として理解することができ、オブジェクトはこの金型に基づいて生産される製品です。
クラスと構造
パッケージ
何かを一緒にパッケージ化し、新しい完全な形で提示します。
隠された属性、方法、または実装の詳細を処理する方法は、カプセル化と呼ばれます。
カプセル化は、実際に特定の情報を選択的に公開または隠しているため、データのセキュリティ問題を解決します。
継承
継承は、既存のクラスを再利用して新しいクラスを生成する機能です。
素人の用語では、既存のクラス(つまり、親クラスまたはベースクラス)から新しいクラス(サブクラスまたは派生クラス)を作成するプロセスです。
実生活では、相続は財産の再利用の目的を達成することができますが、Javaでは、相続はコードの再利用を行うことができます。
多型
多型とは、異なるクラスで同じ関数の異なる実装を指します。
多型の利点は、クラスがより柔軟で拡大しやすくなることです。
ここで話さなければならない「抽象」もあります
抽象的な
同じまたは類似のオブジェクトを同じカテゴリに分類するプロセスは抽象化であるため、抽象化は問題を分析する方法です。
抽象化の基本原則:
二次的な問題ではなく、主要な問題のみを気にします。
二次的な矛盾ではなく、主な矛盾のみを気にします。
同じことを気にするだけでなく、違いはありません。
問題が何であり、何が達成できるかを気にしますが、それを達成する方法ではありません。
抽象プロセスは、実際にはオブジェクト指向プログラミングの中心的なアイデアです。
Javaのクラスの定義
Javaでオブジェクトを作成します
オブジェクトを作成するための構文
配列と同様に、オブジェクトはデータ型を参照し、新しい演算子を使用してヒープからのみメモリを割り当てることができます。
オブジェクトを作成するための一般的な構文:
クラス名参照名= new class name();
既に定義されているクラスを使用して、そのクラスでオブジェクトを作成するプロセスは「インスタンス」と呼ばれます。
メンバーオペレーター「。」
クラスのオブジェクトを最初に缶メンバー(プロパティと方法)にインスタンス化することによってのみ、クラスでアクセスします。
メンバーオペレーター(。)を使用して、メンバープロパティまたはメンバーメソッドにアクセスします。
一般的な構文は次のとおりです。
オブジェクト名。次のようなメンバー名:
std.age = 18; //メンバー属性std.dining()に値を割り当てます。 //メンバーメソッドを呼び出します
アクセス許可:パブリックおよびプライベート
C言語の構造のメンバーはどこからでもアクセスできます。これにより、データセキュリティに大きな隠れた危険が残ります。
クラスの外部からクラスメンバーに直接アクセスすることによって引き起こされるデータの破損を回避するために、Javaはクラスメンバーへのアクセスに関する制約を設定します。
キーワードパブリックとプライベートは、クラスの外部からメンバーにアクセスできるかどうかを示すアクセス修飾子です。
公開修正のメンバーは、制限なしにどこでもアクセスできます。
プライベートによって変更されたメンバーは、このクラスの他のメンバーによってのみアクセスでき、クラスの外部からアクセスすることはできません。
クラスの外からプライベートメンバーにアクセスできません。
他のクラスのプライベートメンバーも、現在のクラスから隠されています。
アクセス許可の例
クラス学生{private string name; //名前、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、プライベート、クラス外から直接アクセス。 // Weight, private, directly access from outside the class// Method of eating, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, public, //The walkメソッドはクラスの内部メンバーであり、このクラスのプライベートメンバーに直接アクセスできます}} public class test {public static void main(string [] args){desute std = new sustent(); //スチューデントオブジェクトstd.age = 18; //クラス外からプライベートメンバーにアクセスしてみてください。エラーがstd.dining()が報告されます。 //パブリックメンバーへのアクセスを受け入れる}}
アクセス許可(続き)
アクセス修飾子を追加すると、データの操作に不便を引き起こすことがありますが、データのセキュリティを大部分に保証できます。
一般に、メンバーの属性をプライベートおよびメンバーの方法として公開と宣言しますが、そうすることは絶対的ではありません。
一部のプライベートデータメンバーをクラスの外で操作する必要がある場合があるため、パブリック方法を追加できます。この方法を使用して、クラス外の誤解によって引き起こされるデータの腐敗を回避するためにプライベートデータを操作することができます。
主な方法はクラスの外側の仮想マシンによって呼び出される必要があるため、主な方法は公開される必要があります。
例:学生クラスを変更します
クラス学生{//学生クラスのプライベート文字列名を定義します。 //名前、プライベートプライベートインターエイジ。 //年齢、プライベートなフロート重量。 //重み、プライベートパブリックvoid setName(string name){// nameに値を割り当てる方法、public this.name = name; } public void Setage(int a){//年齢に値を割り当てる方法、公共年齢= a; } public void setweight(float w){//値を重みに割り当てる方法、public weight = w; } public void display(){//すべての情報を印刷する方法は、公開されているsystem.out.println( "name:" + name + "、age:" + age + "、weight:" + weight); } public void dining(){...} //食べる方法、パブリック、わずかにパブリックなボイドウォーク(){...} //歩く方法、パブリック、コード、コード、コード} public class test {public static void main(string [] args){desute std = new Student(); //学生クラスのオブジェクトstd.setname( "Zhang San")をインスタンス化します。 // std.setage(18)という名前を割り当てます。 // std.setweight(55)を割り当てます。 // std.dining()を重量に割り当てます。 // std.display()を食べる方法を呼び出します。 //情報を印刷}}オブジェクトの初期化
上記の例では、データメンバーに1つずつ値を割り当てることができます。オブジェクトのインスタンス化中にメンバー属性を初期化する場合は、構築方法を使用します。
コンストラクターは特別なメンバー方法であり、クラスと同じ名前を持ち、オブジェクトがインスタンス化されたときに仮想マシンによって自動的に呼び出されます。
注意:コンストラクターには返品値のタイプがなく、返品値を持つことができません。
建設方法の例:
/ *constructordemoクラスを定義し、コンストラクターメソッドをテストします */ class constructordemo {/ *constructor、メソッド名はクラス名とまったく同じです。リターン値タイプを指定する必要はありません。 }} /*メインメソッドに対応するために使用されるテストクラスは、通常、メインメソッドをパブリッククラステストとして含むクラスを宣言します* /*メインメソッド、プログラムエントリ* / public static void main(String [] args){ /*constribonctordemo class* / constructordemo cd = new constructordemo(); }} //「これはコンストラクターメソッドです」出力が出力されます建設方法
これはまさに、オブジェクトのインスタンス化中にコンストラクターメソッドが自動的に呼び出されるため、コンストラクターメソッドは一般に、データメンバーにリソースを割り当てるか、データメンバーの初期化を行うために使用されます。
一般的な建設方法:
アクセス許可クラス名(正式なパラメーターリスト){
メソッドボディ
}
コンストラクターは仮想マシンによって呼び出されるため、コンストラクターは一般にパブリックとして定義する必要があります。
例:学生クラスにコンストラクターを追加します
クラス学生{//学生クラスのプライベート文字列名を定義します。 //名前、プライベートプライベートインターエイジ。 //年齢、プライベートなフロート重量。 //重量、プライベート//建設方法、パスされたパラメーターに従ってデータメンバーに値を割り当てます年齢= a;重量= w; } public void setName(string n){...} //名前、パブリック、コードのわずかにパブリックボイドセット(int a){...} //値を年齢、パブリック、コード、わずかにパブリックボイドセットウェイト(float w){…} //重みを割り当てる方法、パブリック、コード、パブリックボイドディスプレイ(){…} {…} //食べる方法、パブリック、コード、わずかにパブリックボイドウォーク(){…} //ウォーク、パブリック、わずかにパブリックボイドウォーク(){…} //ウォーク、パブリック、コードをわずかにパブリッククラステストする方法{public static main(String [] args){//構築方法を使用して、データメンバーの初期値を指定するために構築方法を指定するstd.display(); //情報を印刷}}
構築方法(続き)
各オブジェクトは、生成時にコンストラクターを実行する必要があり、1回しか実行できません。
コンストラクターメソッド呼び出しが失敗した場合、オブジェクトを作成できません。
コンストラクターを明示的に直接呼び出すことはできません。
コンストラクターが定義されていないと、クラスはパラメーターなしでデフォルトのコンストラクターを自動的に生成しますが、それは何もしません。
コンストラクターが明示的に定義されると、デフォルトのコンストラクターが自動的に消えます。したがって、一般に、2つの構造方法が定義されています。パラメーターとパラメーターなし。
要約します