プログラミングが好きなあなたのように!
SpringBoot実用的なコースは学習https://edu.csdn.net/course/detail/31433
SpringCloud入門コースを学びhttps://edu.csdn.net/course/detail/31451を
オブジェクト指向シリーズ:
クラスとオブジェクトの
カプセル化は、ポリモーフィック静的キーワードとシングルトンモードインターフェイスおよび内部クラスを
継承します
序文
オブジェクト指向はJavaを学ぶためのコア知識ポイントであり、多くの学生がJavaを学ぶのも難しいポイントです。理解する概念はたくさんあります。この記事は、オブジェクト指向の概念、クラス、オブジェクトから、単純なものから深いものまであります。オブジェクト指向プログラミングの概念、次に属性とメソッド、構築メソッド、このキーワード、そして最後にオブジェクト指向のメモリ割り当てを分析して、Javaオブジェクト指向を紹介します。
オブジェクト指向の概念
オブジェクト指向(Object Oriented)は、ビジネス関連のデータとメソッドを全体として整理し、物事の自然な動作モードに近い、より高いレベルからシステムモデリングを実行するプログラミングモデルです。
初期のプログラム開発はプロセス指向であり、ビジネス機能を達成するための一連のステップに焦点を合わせていました。
食事のシーンの例を見てみましょ
う。プロセス指向の考え方で何を説明するのですか?
- 箸を持ったリトルロリ
- 麺
- 口に入れる
- 噛む
- 飲み込む
オブジェクト指向の考え方で何を説明するのですか?
- 分析オブジェクトは次のとおりです。
- 小ロリ
- 箸
- 丼鉢
- 麺
- 分析オブジェクト間の関係:
- リトルロリは箸を使う
- 箸麺
- 麺を入れるボウル
プロセス指向とオブジェクト指向の違いは次のとおりです。
- プロセス指向は、主に機能を実現するためのステップと実現の詳細に関係しています。
- オブジェクト指向は、主にオブジェクトとオブジェクト間の関係に焦点を当てており、実装の詳細には注意を払いません。
クラスとオブジェクト
オブジェクト指向のコアコンセプトには、クラスとオブジェクトが含まれます。オブジェクト指向を理解するには、まずクラスとオブジェクトが何であるかを理解する必要があります。
どんな馬?
クラスは、同じ特性と動作を持つオブジェクトのコレクションです。たとえば、LOLのヒーローは、ゲーム内のすべてのヒーローを指すカテゴリに属します。
オブジェクトは神の馬ですか?
特定のクラスの具体的な個人。例:ティモは英雄の目的語です。
演習
例を挙げてください:クラスと人生の目的語はどれですか?
オブジェクト指向プログラミング
オブジェクト指向プログラミング(オブジェクト指向プログラミング)を実現するには、クラスとオブジェクトを使用する必要があります。
クラスは、車の設計図に似た、オブジェクトのモデルまたは青写真です。
オブジェクトは、実際の車と同様に、クラスの設計に従って作成された具体的なインスタンスです。
OOPプログラミングのプロセスは次のとおりです。
- 定義クラス
- クラスを使用してオブジェクトを作成する
- オブジェクトのプロパティまたはメソッドを呼び出す
クラスを定義するための構文は次のとおりです。
public class 类名{
属性
方法
}
プロパティとメソッド
属性とは何ですか?
オブジェクトの特徴は名詞で表されます。
例:車のサイズ、色、価格、ブランド
方法は何ですか?
被験者の行動は動詞を使って表現されます。
例:車の始動、方向転換、ブレーキ
プログラムで属性はどのように表されますか?
クラスで定義されたメンバー変数
public class Car{
String color; //颜色属性
double price; //价格属性
}
メソッドはどのように定義されていますか?
public 返回值类型 方法名(类型 参数,...){
方法体;
}
オブジェクトを作成するための構文は何ですか?
类名 对象名 = new 类名();
オブジェクトのプロパティとメソッドを呼び出す方法は?
对象名.属性 = 值;
对象名.方法(参数);
ケース:LOLヒーロークラスを定義します。
属性:名前、血量、青量、攻撃力
方法:移動、都市に戻る
public class Hero {
//名字
String name;
//血量
int hp;
//蓝量
int mp;
//攻击力
int attack;
/**
* 移动
*/
public void move(){
System.out.println("英雄"+name+",攻击力"+attack+"在移动!");
}
/**
* 回城
*/
public void back(){
System.out.println("英雄"+name+"血量"+hp+",蓝量"+mp+",回城了!");
}
}
public class TestHero {
public static void main(String[] args) {
//创建对象
Hero hero = new Hero();
//调用属性
hero.name = "提莫";
hero.hp = 500;
hero.mp = 200;
hero.attack= 100;
//调用方法
hero.move();
hero.back();
}
}
演習:車のカテゴリを定義し、ブランド、価格、色の属性を定義し、運転、ブレーキ、回転の方法を定義します。mainメソッドで3つの異なる車のオブジェクトを作成し、車のプロパティとメソッドを呼び出します。
工法
工法は何をしますか?
- オブジェクトを作成し、メモリを割り当てます
- オブジェクトのプロパティを初期化するのに便利
工法の定義方法は?
- 名前はクラス名と同じです
- 戻り値タイプなし
- パラメータを持つことができるかどうか
public 类名(){
}
public 类名(类型 参数..){
}
コンストラクターを呼び出す方法は?
新しいキーワードを使用する
new 类名();
new 类名(参数);
ケース:Heroクラスにコンストラクターメソッドを追加する
public Hero(){
System.out.println("調用Hero的無參構造方法");
}
public Hero(String name,int hp,int mp,int attack){
this.name = name;
this.hp = hp;
this.mp = mp;
this.attack = attack;
}
オブジェクトを作成する
Hero hero = new Hero("提莫",500,200,100);
デフォルトの構築方法
一部の学生は、次のように質問する場合があります。構築メソッドを作成しないのに、なぜ新しいクラス名()を使用してオブジェクトを作成できるのですか?
- コンストラクターが定義されていない場合、コンパイラーは、次のように、パラメーターのない空のコンストラクターをクラスに自動的に追加します。publicclass name(){}
- コンストラクターを手動で追加すると、コンパイラーはこのデフォルトのコンストラクターを削除します。
- 通常の状況では、パラメーター構築メソッドをクラスに追加する場合、パラメーターなしのオブジェクトの作成を容易にするために、パラメーターなしの構築メソッドを手動で追加します。
このキーワード
これは現在のオブジェクトを表します
。このキーワードの機能は次のとおりです。
- 現在のオブジェクトの属性this。attributeを呼び出します。
- 現在のオブジェクトのメソッドthis.method name(…);を呼び出します。
- 現在のオブジェクトの構築メソッドthis(...)を呼び出します
構築方法でこれを使用する理由は、パラメータ名と属性名が同じであるためです。区別するために、これを使用して属性を呼び出し、これを使用せずにパラメータを呼び出します。
this.name = name;
演習:
コンピュータークラスの定義、属性:CPU、価格、メモリ、グラフィックカードタイプ;
メソッド:映画の視聴、ゲームのプレイ
、プロパティの初期化、
コンピューターオブジェクトの作成、映画の視聴、ゲームのプレイを行うためのコンピュータークラスの構築メソッドの定義
オブジェクトメモリの割り当て
JVMは仮想コンピュータであり、管理のためにメモリを5つの領域に分割します
。1)プログラムカウンタ
はスレッドコンテキストの実行コードの行数を保存します
2)ローカルメソッド領域
はネイティブメソッドに関する情報を保存します
3)メソッド領域
はクラス情報、静的変数を保存します、および定数など
。4)仮想マシンスタック
ローカル変数、オブジェクト参照(メモリアドレス)
5)ヒープ
は実オブジェクトを保持します
終わり
マニュアルを書いた後、宿題を残します。質問がある場合は、コメントを残すことができます
。1 。ゲームシーンを実現する:
ウルトラマンはモンスターと戦う。ウルトラマンには、名前、攻撃力、血液量、スキルなどの属性があります。軽い攻撃;
モンスターには名前、攻撃力、血量の属性があり、スキルは走る、ブルートフォース攻撃です。
UltramanオブジェクトとMonsterオブジェクトを作成してから、それらのプロパティとメソッドを呼び出します。
他のJavaの知識を学ぶ必要がある場合は、ここでJavaの概要に関する非常に詳細な知識を調べてください。