1. 程式人生 > >初學JAVA面向物件最應該看的小程式

初學JAVA面向物件最應該看的小程式

跟著視屏敲了一個十分簡單的程式碼小遊戲,感觸很深,讓我對java面向物件的設計理念有了進一步的理解,以及前期所學的java基礎內容得到了鞏固。萬物皆物件,程式設計時思維很清晰。

            程式所應用到的大的知識點:

                  抽象類,繼承,多型,構造方法(這個程式讓我對構造方法有了深刻的認識)。

程式碼如下:


public class Test01 { // 測試類

	public static void main(String[] args) {
		Officer officer = new Officer("雲騰"); // 例項化一個officer物件,名字叫雲騰
		officer.callToAttack(); // 呼叫officer無引數的callToAttack方法,所有人攻擊
		officer.callToAttack(officer.getSoldier()[0]); // officer命令第一個士兵去攻擊
	}

}

abstract class Soldier { // 建立一個抽象Soldier類
	private String name; // 私有化成員變數

	public Soldier(String name) { // 構造方法初始化成員變數name
		this.name = name;
	}

	public String getName() { // 建立一個得到name的方法
		return name;
	}

	// 行動
	public void start() { // 準備戰鬥
		System.out.println(getName() + "準備攻擊");
	}

	public void end() { // 攻擊完成
		System.out.println(getName() + "攻擊完成");
	}

	public abstract void attack(); // 攻擊的抽象方法

	public void action() { // 行為的過程,每個戰士戰鬥的過程
		start();
		attack();
		end();
	}
}

class LandSoldier extends Soldier { // 陸軍繼承士兵
	public LandSoldier(String name) {
		super(name);
	}

	// 實現類中的抽象方法(陸軍的攻擊方法)
	public void attack() {
		System.out.println(getName() + "使用步槍");
	}
}

class OceanSoldier extends Soldier { // 海軍繼承士兵
	public OceanSoldier(String name) {
		super(name);
	}

	// 實現類中的抽象方法(海軍的攻擊方法)
	public void attack() {
		System.out.println(getName() + "使用魚雷");
	}
}

class Officer extends Soldier { // 司令員繼承士兵
	private Soldier[] soldiers = new Soldier[2]; // 建立倆個私有戰士,陣列表示

	public Officer(String name) { // 構造方法初始化陣列
		super(name);
		soldiers[0] = new LandSoldier("張三");
		soldiers[1] = new OceanSoldier("李四");

	}

	public Soldier[] getSoldier() { // 得到私有化後戰士的名字
		return soldiers;
	}

	// 司令員的攻擊方式
	public void attack() {
		System.out.println(getName() + "使用手槍射擊");
	}

	// 讓所有的士兵發動攻擊,包括自己
	public void callToAttack() { // 所有人攻擊
		for (int i = 0; i < soldiers.length; i++) {
			soldiers[i].action();// 每個士兵呼叫自己的的攻擊方法
		}
		this.action();// 自己也參與攻擊
	}

	// 讓一個士兵去攻擊
	public void callToAttack(Soldier soldier) { // 命令其他士兵攻擊,包括自己
		soldier.action();

	}
}

希望能幫助到像我一樣的初學者