Encapsulation、Inheritance、Polymorphism
public class SoldierDemo {
public static void main(String[] args) {
/*Soldier test1=new Army("张三");
test1.action();
Soldier test2=new Navy("李四");
test2.action();*/
Officer test=new Officer("许三多");
test.allcommand();
System.out.println("*********************************");
test.command(test.getSoldier()[0]);
}
}
abstract class Soldier{
private String name;
public Soldier(String name){
this.name=name;
}
public abstract void fight();//抽象作战方法,由具体的士兵去实现
public void start(){
System.out.println("开始攻击");
}
public void end(){
System.out.println("结束攻击");
}
public void action(){
start();
fight();
end();
}
public String getName() {
return name;
}
}
class Army extends Soldier{
public Army(String name) {
super(name);
}
public void fight(){
System.out.println(getName()+"用步枪射击");
}
}
class Navy extends Soldier{
public Navy(String name) {
super(name);
}
public void fight() {
System.out.println(getName()+"用鱼雷射击");
}
}
class Officer extends Soldier{
//军官应该持有自己的士兵
private Soldier [] soldier=new Soldier[2];
public Soldier[] getSoldier() {
return soldier;
}
public Officer(String name) {
super(name);
soldier[0]=new Army("sofm");
soldier[1]=new Navy("uzi");
}
public void fight() {
System.out.println(getName()+"用手枪射击");
}
//军官自己特有的方法
public void allcommand(){//让所有的士兵攻击
System.out.println("指挥所有士兵");
for(int i=0;i<soldier.length;i++){
soldier[i].action();
}
this.action();//军官自己也要参与攻击
}
public void command(Soldier soldier){//让单个士兵去攻击
System.out.println("指挥具体士兵");
soldier.action();
}
}
Encapsulation、Inheritance、Polymorphism的更多相关文章
- JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-008Polymorphic many-to-one associations(@ManyToOne、@Inheritance、)
一.结构 二.代码 1. package org.jpwh.model.inheritance.associations.manytoone; import org.jpwh.model.Consta ...
- 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...
- 黑马程序员——【Java基础】——面向对象(一)概述、类与对象、继承、抽象类、接口、多态、内部类
---------- android培训.java培训.期待与您交流! ---------- 一.面向对象概述 1.面向对象:是一个很抽象的概念,它相对面向过程而言,是一种程序设计的思想. 2.面向对 ...
- JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等
一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...
- JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档
作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...
- Javascript面向对象三大特性(封装性、继承性、多态性)详解及创建对象的各种方法
Javascript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance )和多态(polymorphism ).只不过实现 ...
- python笔记-9(subprocess模块、面向对象、socket入门)
一.subprocess 模块 1.了解os.system()与os.popen的区别及不足 1.1 os.system()可以执行系统指令,将结果直接输出到屏幕,同时可以将指令是否执行成功的状态赋值 ...
- 第7章 Python类型、类、协议 第7.1节 面向对象程序设计的相关知识
Python被视为一种面向对象的语言,在介绍Python类相关的内容前,本节对面向对象程序设计相关的概念进行简单介绍. 一. 类和对象(实例) 在面向对象的程序设计(OOP)过程中有两个重要概念 ...
- python基础之面向对象(一)(概念、实例、魔法方法)
一.面向对象概念理解 1.面向对象和面向过程 面向过程:核心过程二字,过程即解决问题的步骤,就是先干什么后干什么 基于该思想写程序就好比在这是一条流水线,是一种机械式的思维方式 优点:复杂的过程流程化 ...
随机推荐
- getGLES1ExtensionString: Could not find GLES 1.x config!
编辑模拟器中 Emulated performance 中不选 auto 和 Hardware - GLES 2.0,选择Software-GLES2.0.解决问题
- .NET core mvc on Docker
安装Docker 参考:http://www.cnblogs.com/windchen/p/6224233.html 下载.NET CORE MVC镜像 sudo docker pull regist ...
- OO.A.D.P
OO/A/D/P 对象和类 三大特征 对象: 对象是面向对象语言的一个极为重要的特点,所有的面向对象语言都有对象的共性. 1. 职责(单一) 2. 属性(数据.可改变的) 3. 函数(行为.方法.业务 ...
- beautifulsoup小节
在beautifulsoup中,一个tag可能有很多个属性. tag <b class="boldest"> 有一个 “class” 的属性,值为 “boldest” ...
- win8 系统无法正常安装.net framework 2.0和3.0框架如何解决
在安装.net framework2.0框架的时候一直提示要用户从网上面下载框架,你点击下载好的安装包也是无法安装的.这个时候就需要你使用离线的安装包来进行问题的解答附件在此http://pan.ba ...
- scala 学习之:list span 用法
Pack consecutive duplicates of list elements into sublists. If a list contains repeated elements the ...
- cookie以及cookie的作用
ios中对cookie操作的两个类分别是:1. NSHTTPCookie 2. NSHTTPCookieStorage,具体的使用在这里就不多说了. 1.什么是Cookie("小甜饼&qu ...
- HDU1075
题目大意: 给你一本火星词典,每个火星单词对应一个英文单词. 然后给你一篇火星文章,要求你翻译成英文. 要求如下: 如果这个火星单词用英文单词可以表示,就翻译成英文,如果没有这个单词,就原样输出.遇到 ...
- 关于apache httpd.conf脚本的理解
新人一枚,这两天一直在研究lamp的搭建,感觉自己对apache理解的不够深彻,决定写这一篇(翻译)httpd.conf文件 未完待续 cat /usr/local/apache/conf/httpd ...
- [整理]Matlab之中心平滑滤波
滑动平均(moving average):在地球物理异常图上,选定某一尺寸的窗口,将窗口内的所有异常值做算术平均,将平均值作为窗口中心点的异常值.按点距或线距移动窗口,重复此平均方法,直到对整幅图完成 ...