编写一个Soldier类,描述具有普遍行为和属性的一个士兵对象。

编写陆军士兵、海军士兵、军官类来扩展Soldier类。

设计Soldier类的相关属性和方法。

建模几个陆军士兵、海军士兵、军官类来继承Soldier类,增加各自特有的属性和方法并重写相应的方法。

public class SoldierDemo {

	public static void main(String[] args) {
// TODO Auto-generated method stub Leader leader = new Leader("leader");
leader.CallToAttack();//全体进攻
System.out.println("*****************************");
leader.CallToAttack(leader.getSoldiers()[0]);//只让一个士兵进攻
System.out.println("*****************************");
leader.CallToAttack(leader);//只让指挥官进攻
} } abstract class Soldier{
private String name;
public Soldier(String name) {
this.name = name;
} public String getName() {
return name;
} public void ready() {
System.out.println("准备作战");
} public void end() {
System.out.println("战斗结束");
} abstract void attack(); public void action() {//行动模板
ready();
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 Leader extends Soldier{ private Soldier[] soldiers = new Soldier[2];//指挥官持有两个士兵 public Leader(String name) {
super(name);
soldiers[0] = new LandSoldier("张三");
soldiers[1] = new OceanSoldier("李四");
} public Soldier[] getSoldiers() { //外界可以调用这两个士兵
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();
} }

  

java多态抽象类实例的更多相关文章

  1. Java面向对象抽象类实例练习

    abstract class Animal { abstract void eat(); } class Cat extends Animal { void eat() { System.out.pr ...

  2. Java第十二次作业:继承与抽象类解决工人与学生的问题,抽象类实例。抽象类作用——为多态创造了可能。抽象类的作用总结

    继承与抽象类解决工人与学生的问题 抽象类实例 package com.swift; public abstract class Person { private String name; privat ...

  3. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

  4. Java-Runoob-面向对象:Java 多态

    ylbtech-Java-Runoob-面向对象:Java 多态 1.返回顶部 1. Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操 ...

  5. 构建后端第6篇之---java 多态的本质 父类引用 指向子类实现

    张艳涛写于2021-2-20 今天来个破例了,不用英文写了,今天在家里电脑写的工具不行,简单的说 主题是:java多态的原理与实现 结论是:java的多态 Father father= new Son ...

  6. Java 多态——与C++的比较

    学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...

  7. C++和java多态的区别

    C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报  转载自:http://www.cnblogs.com/plmnko/archive ...

  8. 深入理解Java多态机制

    从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...

  9. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

随机推荐

  1. Angular2-给属性做双向绑定

    呈现一个实体对象的DOM结构,这个DOM有个自定义属性是需要动态赋值的,比如说 item.data 要绑到自定义属性 data 上:你可能会这么写: data="{{item.data}}& ...

  2. IIS 站点 共享目录

    1.先建立站点,再设置文件夹为共享,Everyone 2.Mac电脑 Everyone不能访问,必须建立用户

  3. Centos7环境下 安装ffmage2.7.1过程

    参考http://trac.ffmpeg.org/wiki/CompilationGuide/Centos#FFmpeg 先查看了官方文档,消化以后,开始自己编译ffmage2.7.1,所需要安装包, ...

  4. HA_Ship Transcation Log 事务日志传送

    环境准备: 虚拟机3台,INTER-DC, INTER-SQLA, INTER-SQLB 创建域帐户 INTER\MSSQLSERVER.SERVICE,INTER\AGENT.SERVICE,分别添 ...

  5. C# 字符串处理—— 去除首位保留其他

    //去除首位 public static string RemoveFirstPlace(string s) { ) //输入空值直接Return { ")) //判断开头是否是零 s = ...

  6. MYSQL登录错误:mysqladmin: connect to server at ‘localhost’ failed

    一.mysql登录错误 mysqladmin: connect to server at 'localhost' failed       error: 'Access denied for user ...

  7. C# 之VS程序打包

    VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具:  InstallShield2015LimitedEdition.下载地址:http://pan.baidu. ...

  8. VS中让用户选择路径

    //选择文件 OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); MessageBox.Show(ofd.FileName); / ...

  9. Java CountDownLatch解析(下)

    写在前面的话 在上一篇CountDownLatch解析中,我们了解了CountDownLatch的简介.CountDownLatch实用场景.CountDownLatch实现原理中的await()方法 ...

  10. Thymeleaf学习记录(5)--运算及表单

    Thymeleaf文本及预算: 字面 文本文字:'one text','Another one!',... 号码文字:0,34,3.0,12.3,... 布尔文字:true,false 空字面: nu ...