java多态抽象类实例
编写一个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多态抽象类实例的更多相关文章
- Java面向对象抽象类实例练习
abstract class Animal { abstract void eat(); } class Cat extends Animal { void eat() { System.out.pr ...
- Java第十二次作业:继承与抽象类解决工人与学生的问题,抽象类实例。抽象类作用——为多态创造了可能。抽象类的作用总结
继承与抽象类解决工人与学生的问题 抽象类实例 package com.swift; public abstract class Person { private String name; privat ...
- [ Java学习基础 ] Java的抽象类与接口
一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...
- Java-Runoob-面向对象:Java 多态
ylbtech-Java-Runoob-面向对象:Java 多态 1.返回顶部 1. Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操 ...
- 构建后端第6篇之---java 多态的本质 父类引用 指向子类实现
张艳涛写于2021-2-20 今天来个破例了,不用英文写了,今天在家里电脑写的工具不行,简单的说 主题是:java多态的原理与实现 结论是:java的多态 Father father= new Son ...
- Java 多态——与C++的比较
学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...
- C++和java多态的区别
C++和java多态的区别 分类: Java2015-06-04 21:38 2人阅读 评论(0) 收藏 举报 转载自:http://www.cnblogs.com/plmnko/archive ...
- 深入理解Java多态机制
从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私 ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
随机推荐
- vim入门之配色方案(colorscheme)设置
系统版本:ubuntu 16.04 LTS 刚开始用vim的时候,大家可能会觉得默认的语法高亮的颜色不合心意,不过对于vim来说,这并不是一个问题.其实vim的配色方案是可以更改的,既可以选择系统自带 ...
- 批量删除SVN文件
开发过程中,有时需要将SVN目录中的SVN相关的信息去掉,有两种简单方法可以做到: 一,用SVN的export功能 二,将下面的这段文字写在.reg结尾的文本文件中,然后执行.这样你在每个文件夹右击的 ...
- PL/SQL之游标的使用
Oracle中的游标有两种: 显式游标 用CURSOR...IS 命令定义的游标,它可以对查询语句(SELECT)返回的多条记录进行处理. 隐式游标 是在执行插入(INSERT).删除(DELETE) ...
- Knockout.js hasFocus
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- C#RabbitMQ基础学习笔记
RabbitMQ基础学习笔记(C#代码示例) 一.定义: MQ是MessageQueue,消息队列的简称(是流行的开源消息队列系统,利用erlang语言开发).MQ是一种应用程序对应用程序的通信方法. ...
- MapReduce详解和WordCount模拟
最早接触大数据,常萦绕耳边的一个词「MapReduce」.它到底是什么,能做什么,原理又是什么?且听下文讲解. 是什么 MapReduce 即是一个编程模型,又是一个计算框架,它充分采用了分治的思想, ...
- 关于springmvc中常用的注解,自己也整理一下
1.@Controller 在springMVC中@controller主要用在控制层的类上,之前只知道用注解开发的时候必须加一个@controller ,今天看了别的大佬整理的才知道为什么这么用,控 ...
- HDU 1875(最小生成树)
因为是全连接图,所以也可以用最小生成树 这道题给边加了一个限制条件,(10<=x<=1000),所以可能不能全连通,需要判断 #include <cstdio> #includ ...
- HTTP(S)网络框架的设计
0.麻烦 操作系统提供的网络接口都会令人不爽,要么太接近底层而使用不便,要么层次过高又不提供底层点的接口供设置参数.但是我们不能期望系统API做得很高级,因为没有绝对合适的网络库,必须定制化从而达到适 ...
- Akka - Basis for Distributed Computing
Some concepts as blow: Welcome to Akka, a set of open-source libraries for designing scalable, resil ...