`
helpbs
  • 浏览: 1165026 次
文章分类
社区版块
存档分类
最新评论

不良代码展示-父类中可以抽象出子类的行为

 
阅读更多

原创文章,如有转载,请注明出处:http://blog.csdn.net/yihui823/article/details/6932952


把一段代码,业务逻辑剥离后,给大家看看。

基类:


子类1:


子类2:


调用的类:


运行结果当然是对的。可是,子类的行为,却定义在了父类之中了。也就是说,基类的“书”,却根据每本书的颜色去做行为判断的。

if (type == 1) {
System.out.println("Print with the green color.");
} else if (type == 2) {
System.out.println("Print with the blue color.");
} else {
System.out.println("Print with the white color.");
}

这个结构,扩展性不好,也不好维护,也不好阅读。

问当事人,当事人说,我在父类没法知道是哪个子类啊。但是这个业务是可以抽取的,所以就写成这个样子了。

其实,可以这么写的。

基类:


子类1:


子类2:


执行类:


把属于子类的行为,定义成抽象函数,由子类去实现。OK











分享到:
评论

相关推荐

    面向对象程序设计与实践-Java抽象类和接口[33页].pptx

    只有它的非抽象子类可以创建对象,而抽象类定义的对象可以用于指向子类对象。例如, Pet p = new Pet("小白","白色",2,12,2000);//错误,抽象类不能实例化 Pet p = new Cat("咪咪","灰色",1,8,3000,"波斯猫");//正确...

    抽象类和接口的区别

    我们可以构造出一个固定的一组行为的抽象描 述, 但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类, 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来...

    《java面向对象程序设计-继承和多态》教案.doc

    声明抽象类语法: abstract class{…… } 使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方 法的实现细节 abstract 修饰符 3-2 抽象类可以具有指向子类对象的对象引用 abstract 修饰...

    Java:使用抽象类定义一个“形状类”,能够计算周长和面积。

    使用抽象类定义一个“形状类”,能够计算周长和面积,分别用矩形、三角形、圆形对形状类进行继承,并定义测试类进行测试输出周长和面积。

    介绍Java的抽象类和接口的使用.docx

    这样一来,谁继承了Animal类,谁就有了它的属性和行为,子类不用管父类的行为是否合适,因为父类的行为“有名无实”,所以子类只需继承这些“名”,具体的“实”则由子类来完成。 这样的Animal类就是 抽象类 。

    JAVA面向对象详细资料

    1、找出应用中可能需求变化的代码,把它们独立出来,不要和那些需求不变化的的代码混在一起 54 2、针对接口编程,而不要针对实现类编程 54 3、多用组合,少用继承(包含实现) 54 4、为了交互对象之间的松耦合设计而...

    超级全面的Java面试题集及参考答案

    允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用).主要有以下优点: 可替换性:多态对已存在代码具有可替换性. 可扩充性:增加新的子类不影响已经...

    JAVA经典基础面试题及答案.docx

    继承使得子类可以重用父类的代码,并添加自己的特定。 什么是多态? 多态是面向对象编程中的一个概念,它允许不同的对象以不同的方式响应同一消息。也就是说,同一个方法名可以对应多个实现方式。 什么是抽象类? ...

    面向对象详解和JVM底层内存分析

    面向对象(Object-Oriented,简称 OOP)是一种程序设计范式,它以对象为中心,将数据和操作封装在一起,以实现...子类可以扩展或修改从父类继承的行为,同时也可以拥有自己的特定行为。继承是面向对象编程中实现代码重

    Java程序员面试的试题集(1---122)

    Java程序员面试的试题集(1---122) 、面向对象的特征有哪些方面 (1)抽象: 抽象就是忽略一个主题中与当前目标无关的那些...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

    net学习笔记及其他代码应用

    Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 接口(interface)是抽象类的变体。在接口中,所有方法...

    python开闭原则.docx

    通过定义抽象基类和接口,可以让子类实现自己的特定行为,而不需要修改父类的代码。这样可以保证代码的可扩展性和可重用性。 另一种实现开闭原则的方式是使用装饰器。装饰器是一种特殊的函数,它可以在不修改原函数...

    09【继承、super、this、抽象类】1

    声明不变,重新实现。代码如下:重写的应用子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强。比如

    Java常见的面试程序题

    最常见的Java面试题大全的程序面试程序,很有影响力的哦!好好珍惜这个资料吧!有Java的常见面试题的冒泡,常见的算法,...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

    c.c++找工作面试重点结构图-mindmanager

    面向对象中的继承指类的继承,类似父子继承 1、子类拥有父类的所有成员变量和成员函数 2、子类就是一种特殊的父类 3、子类对象可以当作父类对象使用(赋值兼容性原则) 4、子类可以拥有父类没有的方法和属性..........

    2023java常见面试题附答案

    1 面向对象的特征有哪些方面? a.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    子类从它先辈类那里继承了代码和数据,这样,它就可以执行先辈类的功能和访问先辈 类的数据。一个纯面向对象程序设计的语言将具有严格的继承性。 通过对象、类,我们实现了封装,通过子类我们可以实现继承。例如,...

    125条常见的java面试笔试题大汇总

    1.抽象:  抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

    java 程序猿 面试葵花宝典

    面向对象的特征有哪些方面 抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

    java面试题

    1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。...多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

Global site tag (gtag.js) - Google Analytics