(0)写在前面

编程和现实世界是息息相关的,你是如何理解现实世界中的继承呢?

继承在编程中应理解为:对父类资源(本文只讨论方法)的使用,父类方法只提供类基本的功能,父类方法之间不存在调用关系。

(1)案例介绍

我们有这样一个任务,控制一个人上下左右移动,我们开始构建类。

public class Person

{

public void left(){}

public void right(){}

public void up(){}

public void down(){}

public static void main(String[] args)

{

String flag = "左";

Person person = new Person();

if("左".equals(flag))

{

person.left();

}

else if("右".equals(flag))

{

person.right();

}

else if("上".equals(flag))

{

person.up();

}

else if("下".equals(flag))

{

person.down();

}

}

}

等等,上面的类违反了高内聚低耦合原理,我将Person的大量方法暴漏在外面,于是我改成下面的实现

public class Person

{

public static String LEFT = "左";

public static String RIGHT = "右";

public static String UP = "上";

public static String DOWN = "下";

private void left(){}

private void right(){}

private void up(){}

private void down(){}

public void move(Object flag)

{

if(LEFT.equals(flag))

{

left();

}

else if(RIGHT.equals(flag))

{

right();

}

else if(UP.equals(flag))

{

up();

}

else if(DOWN.equals(flag))

{

down();

}

}

public static void main(String[] args)

{

Person person = new Person();

person.move(person.LEFT);

}

}

这样还是有不好的地方,move方法只是left、right、up、down方法的使用方式,它的存在不利用代码的复用,于是我换成了下面的实现。

public class Person

{

public static String LEFT = "左";

public static String RIGHT = "右";

public static String UP = "上";

public static String DOWN = "下";

protected void left(){}

protected void right(){}

protected void up(){}

protected void down(){}

}

Person类属于功能层,功能层是纯粹的,要避免组合的出现,至于这个人到底层怎么走,我们在应用层实现,应用层也是业务逻辑体现的地方。

public class My extends Person

{

public void move(Object flag)

{

if(LEFT.equals(flag))

{

left();

}

else if(RIGHT.equals(flag))

{

right();

}

else if(UP.equals(flag))

{

up();

}

else if(DOWN.equals(flag))

{

down();

}

}

}

嗯,你可能需要只能上下移动的角色哦!

原文:http://www.cnblogs.com/resolvent/p/6357702.html

java代码实现龙卷风_程序设计-理解java继承-遁地龙卷风相关推荐

  1. 深入理解Java虚拟机知乎_深入理解Java虚拟机(类文件结构)

    深入理解Java虚拟机(类文件结构) 欢迎关注微信公众号:BaronTalk,获取更多精彩好文! 之前在阅读 ASM 文档时,对于已编译类的结构.方法描述符.访问标志.ACC_PUBLIC.ACC_P ...

  2. java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用

    深入理解Java中的引用(二)--强软弱虚引用 在上一篇文章中介绍了Java的Reference类,本篇文章介绍他的四个子类:强引用.软引用.弱引用.虚引用. 强引用(StrongReference) ...

  3. java 接口和虚构_深入理解Java的接口和抽象类

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  4. java: 代码过长_给初学Java,知道这4点太重要了!

    本文转自:Java教学与小提琴耿祥义 好的开端是成功的一半,这个不算建议. 建议多了可能失去意义,所以只给以下4点.仅仅是建议不是法律规定.软件基本原则只有一个,满足用户的需求. 1. 职业道德 清晰 ...

  5. Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3

    <深入理解Java虚拟机-JVM高级特性与最佳实践> Chap 2 Java内存区域与内存溢出异常 1.Java运行时数据区域 A.程序计数器:当前线程所执行字节码的行号指示器,线程私有( ...

  6. java虚拟机编译顺序_深入理解Java虚拟机(程序编译与代码优化)

    文章首发于微信公众号:BaronTalk,欢迎关注! 对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就 ...

  7. java 代码 内存泄露_如何用Java编写一段代码引发内存泄露

    Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码.这个问题我一点思路都没有,好囧. A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中) ...

  8. java抽象类的属性_深入理解Java抽象类

    基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...

  9. 龙卷风java_程序设计-理解java继承-遁地龙卷风

    (0)写在前面 编程和现实世界是息息相关的,你是如何理解现实世界中的继承呢? 继承在编程中应理解为:对父类资源(本文只讨论方法)的使用,父类方法只提供类基本的功能,父类方法之间不存在调用关系. (1) ...

  10. java 执行字节码_深入理解java:1.2. 字节码执行引擎

    执行引擎是Java虚拟机的核心组成部分之一. 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM ...

最新文章

  1. SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
  2. 目标检测中的Tricks
  3. 小程序开发填坑汇总贴
  4. 台湾国立大学郭彦甫Matlab教程笔记(17)numerical integration
  5. SAP 权限对象设置及在程序中的应用
  6. 网络基础2(分层模型,通信过程,以太网,ARP协议格式和具体功能详解)
  7. eclipse启动失败:An internal error occurred during: reload maven project
  8. IO模型(epoll)--详解-03
  9. 张庆余(1991-),男,北京卡达克数据技术中心软件业务本部助理工程师,主要研究方向为软件架构、云计算。...
  10. Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient报错,问题排查...
  11. 单点登录的原理与简单实现
  12. (造轮子)C 创建队列和图实现广度优先算法(BFS)和深度优先算法(DFS)(数据结构)
  13. VMware虚拟机与Windows文件共享
  14. VSCode使用记录三:中文显示乱码、设置字体大小、常用快捷键
  15. Quartz插件的使用
  16. MyBatis-Plus的使用
  17. Gallary(中)
  18. 蓝桥杯嵌入式国赛 ---- TRDO TRAO 光敏电阻
  19. ibm服务器面板显示,IBM System x服务器前面板指示灯说明(新版)
  20. 汶川地震死亡人数5月26日消息

热门文章

  1. 微信小程序SHUA访问(UV)开通流 量 主
  2. 电脑图片格式怎么批量转换jpg?几个小妙招轻松转换
  3. 【C语言】1-100求和;1-N求和
  4. 微信群越来越多,我该如何科学地管理?
  5. goldwave简单使用
  6. asp.net WebResource.axd请求报404错误
  7. 生成3D多棱柱的方法(3D立体图片)
  8. CLion程序编译错误 0xC0000135
  9. php去除字符串中的HTML标签
  10. mysql pdf教程_MySQL5.7从入门到精通(刘增杰 著)带书签完整版PDF[230MB]