初學JAVA面向物件最應該看的小程式
阿新 • • 發佈:2019-02-15
跟著視屏敲了一個十分簡單的程式碼小遊戲,感觸很深,讓我對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(); } }
希望能幫助到像我一樣的初學者