初学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();

	}
}

希望能帮助到像我一样的初学者

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值