Javaの基礎10オブジェクト指向〜パッケージング

プログラミングが好きなあなたのように!
SpringBoot実用的なコースは学習https://edu.csdn.net/course/detail/31433
SpringCloud入門コースを学びhttps://edu.csdn.net/course/detail/31451を


オブジェクト指向シリーズ:
クラスとオブジェクトの
カプセル化は、ポリモーフィック静的キーワードとシングルトンモードインターフェイスおよび内部クラスを
継承します


序文

この記事では、カプセル化の役割から、アクセス修飾子を使用した情報の隠蔽、パッケージの使用まで、オブジェクト指向のカプセル化機能について学習し、最後にオブジェクト間の通信について説明します。

パッケージの特徴

オブジェクト指向には、3つの主要な特徴があります。

  • パッケージ
  • 継承
  • 多形性

オブジェクト指向のメインラインをマスターすることは、上記の3つの特性をマスターすることです。

カプセル化とはカプセル化
という用語には、次の2つの意味があります。

  1. パッケージ
    化コードを全体にラップして、呼び出しとメンテナンスを容易にします
  2. エンクロージャ
    情報の非表示、実装の詳細の非表示、およびセキュリティの向上

携帯電話は、部品が梱包されている場合にのみ使用でき、短絡の危険はありません。
ここに写真の説明を挿入

カプセル化の利点

  1. 高いセキュリティ
  2. 使いやすい
  3. 高度なメンテナンス

カプセル化の実現

  1. コードのラップコード
    をメソッドにラップし、プロパティとメソッドをクラスにラップし、クラスをパッケージに保存します。
  2. 情報隠蔽
    は、他のクラスから呼び出されたくない特定のプロパティ、メソッド、およびクラスを非表示にします

アクセス修飾子

アクセス修飾子はJavaのキーワードであり、プロパティ、メソッド、およびクラスのアクセススコープを制限するために使用されます。
アクセス修飾子は次のとおりです。

  • 公衆
  • 民間
  • 保護
  • デフォルトを書かないでください

アクセス修飾子に対応するアクセススコープ

属性のカプセル化

Javaクラスは通常、プロパティをプライベートとして定義し、プロパティにアクセスして変更するためのパブリックゲッター/セッターメソッドを提供します

private double price;
//返回属性的值
public double getPrice(){
	return this.price;
}
//修改属性的值
public void setPrice(double price){
	this.price = price;
}

このように書くことの利点:
1)値の範囲はsetメソッドで制御できます

if(price < 0){
	System.out.println("价格不能小于0");
	this.price = 0;
}else{
	this.price = price;
}

2)属性を制御できます:読み取り/書き込み、読み取り専用、書き込み専用

パッケージのカプセル化

バッグとは?
フォルダと同様に、関連する関数を持つクラスは一緒に保存されます。
効果:

  1. 見つけやすい
  2. 名前の競合を避ける

パッケージを作成します(パッケージコードはクラスの最初の文である必要があります):

package 包名;

パッケージ内のクラスをインポートします(パッケージ内のクラスをインポートする必要はありません):

import java.util.Scanner; 导入一个类
import java.util.*; 导入包中的所有类

オブジェクト間の通信

Javaプログラムの実行中は、相互に連携するために多数のオブジェクトが必要です。オブジェクトとオブジェクトは相互に呼び出す必要があります。オブジェクトの呼び出しは、多くの場合、パラメータの受け渡しによって実装されます。

LOLでヒーローの相互攻撃をシミュレートします。
ヒーロークラスを書き直します。属性privateを定義し、get \ setメソッドを
定義し、構築メソッドを追加し、攻撃メソッド定義します。

  1. 敵を表すヒーローパラメータを追加します
  2. 攻撃方法では、敵は血液を差し引く必要があります:敵の現在の血液量-現在のヒーローの攻撃力
package com.xray.java7;
/**
 * 定义英雄类。
	属性:名字、血量、蓝量、攻击力
	方法:攻击、移动、回城
 */
public class Hero {
	//名字
	private String name;
	//血量
	private int hp;
	//蓝量
	private int mp;
	//攻击力
	private int attack;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp;
	}
	public int getMp() {
		return mp;
	}
	public void setMp(int mp) {
		this.mp = mp;
	}
	public int getAttack() {
		return attack;
	}
	public void setAttack(int attack) {
		this.attack = attack;
	}
	/**
	 * 無參的構造方法
	 */
	public Hero(){
		System.out.println("調用Hero的無參構造方法");
	}
	/**
	 * 有參的構造方法
	 */
	public Hero(String name,int hp,int mp,int attack){
		//使用this關鍵字調用的是屬性
		//通過參數給每個屬性賦值
		this.name = name;
		this.hp = hp;
		this.mp = mp;
		this.attack = attack;
	}
	/**
	 * 攻击敵人
	 */
	public void attack(Hero enemy){
		System.out.println("英雄"+name+"在攻击"+enemy.getName());
		//敵人扣血, 設置敵人的血量為敵人當前血量 - 當前英雄的攻擊力
		enemy.setHp(enemy.getHp() - this.getAttack());
		System.out.println("敵人"+enemy.getName()+"剩餘血量:"+enemy.getHp());
	}
	/**
	 * 移动
	 */
	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 hero1 = new Hero("提莫",400,200,80);
		Hero hero2 = new Hero("劍聖",300,300,100);
		//兩個英雄跑過來
		hero1.move();
		hero2.move();
		//互相進行攻擊
		hero1.attack(hero2);
		hero2.attack(hero1);
		//回城
		hero1.back();
		hero2.back();
	}
}

終わり

この記事の終わりに、今回の仕事は、
ウルトラマンがモンスターと戦うゲームシーンをアップグレードすることです。ウルトラマンには、名前、攻撃力、血液量などの属性があります。飛行、軽い攻撃、
モンスターには名前、攻撃力、血液量の属性:ランニング、ブルートフォースアタックなどのスキルがあります。
ウルトラマンとモンスターオブジェクトの相互攻撃をシミュレートします。
要件:
1。片方が死ぬまでウルトラマンにモンスターと戦わせます
。2 。モンスターにリフレクション攻撃スキルを追加します。このスキルは、モンスターが攻撃されたときに呼び出され、相手の攻撃力の10%を相手に反映します。


他のJavaの知識を学ぶ必要がある場合は、ここでJavaの概要に関する非常に詳細な知識を調べてください。

おすすめ

転載: blog.csdn.net/u013343114/article/details/112358966