编写一个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. Javad的Validator框架概述

    Java EE 6 提出了 Bean Validation 规范,使用注解的方式对 Java Bean 进行约束验证,不局限于某一层次或者某一编程模型,灵活易用.下边将向您系统的介绍该规范的各种特性. ...

  2. Restful的优势

    1. 轻量,直接基于http,不在需要任何别的诸如消息协议.get/post/put/delete为CRUD操作2. 面向资源,一目了然,具有自解释性.3. 数据描述简单,一般以xml,json做数据 ...

  3. 标准Trie字典树学习二:Java实现方式之一

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! 系列文章: 1. 标准Trie字典树学习一:原理解析 2.标准T ...

  4. Java Calendar Date使用总结

    Java Calendar Date使用总结 package cn.outofmemory.codes.Date; import java.util.Calendar; import java.uti ...

  5. 7. Reverse Integer 反向输出整数 easy 9. Palindrome Number 判断是否是水仙花数 easy

    Given a 32-bit signed integer, reverse digits of an integer. 将32位整数反向输出. Note:Assume we are dealing ...

  6. 1..net mvc的原理概述

    请求过来,根据ip和端口,由iis服务器进行接收,如果是静态文件则直接返回文件内容,如果无法解析,则根据映射规则找到对应请求后缀 的ASPNET_ISAPI.dll处理程序集,交由其进行处理. 1.此 ...

  7. [翻译]Review——How JavaScript works:The building blocks of Web Workers

    原文地址:https://blog.sessionstack.com/how-javascript-works-the-building-blocks-of-web-workers-5-cases-w ...

  8. 01--CSS的引入方式及CSS选择器

    一 CSS介绍 现在的互联网前端分三层: a.HTML:超文本标记语言.从语义的角度描述页面结构. b.CSS:层叠样式表.从审美的角度负责页面样式. c.JS:JavaScript .从交互的角度描 ...

  9. js array copy method

    //浅拷贝: let arr=[1,2,3,4] let arr2=arr arr[3]=0 console.log(arr,arr2) //output: (4) [1, 2, 3, 0] (4) ...

  10. Python爬虫教程-00-写在前面

    鉴于好多人想学Python爬虫,缺没有简单易学的教程,我将在CSDN和大家分享Python爬虫的学习笔记,不定期更新 基础要求 Python 基础知识 Python 的基础知识,大家可以去菜鸟教程进行 ...