我对抽象类及其真正目的有疑问.

考虑以下情况:

interface A {

void execute();

}

class AOne implements A {

public void execute() {

x = getX();

..

functionality specific to A

..

y = getY();

..

more funtionality specific to A

}

private X getX() {

..

return x;

}

private Y getY() {

..

return y;

}

}

class ATwo implements A {

public void execute() {

x = getX();

..

functionality specific to B

..

y = getY();

..

more funtionality specific to B

}

private X getX() {

..

return x;

}

private Y getY() {

..

return y;

}

}

所以,我有一个接口A,它声明了一个方法execute()和2个实现,AOne和ATwo都实现/定义execute()

您会注意到两个实现中的execute方法都有一些常见的功能,即方法调用getX()和getY().这两种实现中的这些方法都做同样的事情,即它们在两个子类中都是重复的.

现在,问题.我将通过在接口和实现之间实现一个抽象类来对上面的代码进行一些修改.

interface A {

void execute();

}

public abstract class AbstractA implements A {

protected X getX() {

..

return x;

}

protected Y getY() {

..

return y;

}

}

class AOne extends AbstractA {

public void execute() {

x = getX();

..

functionality specific to A

..

y = getY();

..

more funtionality specific to A

}

}

class ATwo extends AbstractA {

public void execute() {

x = getX();

..

functionality specific to B

..

y = getY();

..

more funtionality specific to B

}

}

您现在将注意到,先前在实现类AOne和ATwo中重复的方法,即getX()和getY()已被移动到抽象类AbstractA.另请注意,AbstractA实现了A,但未提及execute()的任何实现.它只包含AOne和ATwo常用的代码

现在,我认为上面是错误地使用抽象类和不正确的面向对象编程.抽象类不应该用于保存实现类的通用代码,至少不是这种方式.

有人可以对此有所了解,如果上述内容是正确的,请告诉我.如果是,为什么,如果不是为什么?

编辑:我相信我的“公共代码”部分是错误的.我同意抽象类用于保存各种实现类的通用功能.但是如果我们认为方法getX()和getY()是AOne和ATwo类需要的某种实用程序,那么将它们提升到抽象类仍然是一个好主意吗?

问题的底线是:是否应该使用抽象类来保存子类中的公共实用程序代码?

java抽象类代码_java – 抽象类和通用代码相关推荐

  1. java程序中的图片与数值关联_Java 数据库处理通用代码 And 图片存储 及其遇到的问题...

    1.数据库 #建库 create database zhenqk charset utf8; use zhenqk; CREATE TABLE `HR` ( `id` int(6) NOT NULL ...

  2. java抽象类列子_Java 抽象类,求个范例

    展开全部 抽象类与接口紧密相关,32313133353236313431303231363533e4b893e5b19e31333262373337它们不能实例化,并且常常部分实现或根本不实现.抽象类 ...

  3. java全面的计算器代码_Java实现计算器的代码

    用java 实现的计算器,原理看代码注释,具体内容如下 public class mycalculator { public static void main(string[] args) { str ...

  4. java 抽象类 方法_java 抽象类

    Java为什么使用抽象类和接口 Java接口和Java抽象类代表的就是抽象类型,就是我们需要提出的抽象层的具体表现.OOP面向对象的编程,如果要提高程序的复用率,增加程序的可维护性,可扩展性,就必须是 ...

  5. java抽象类变量_Java抽象类

    一.解释: Java的普通类是一个完善的功能类,可以直接实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容.而抽象类是指在普通类的结构里面增加抽象方法的组成部分 ...

  6. java抽象类关键字_Java 抽象类 abstract关键字

    抽象类前使用abstract关键字修饰,则该类为抽象类 抽象的方法是不完全的,它只是一个方法签名而完全没有方法体 抽象的方法没有花括号 继承抽象类的子类必须覆盖父类的抽象函数(即:子类继承抽象类以后, ...

  7. java抽象类例子_java抽象类经典实例分享

    在这之前有给大家详细的介绍过java抽象类,相信很多人应该都比较了解了,那么下面就要继续来给大家分享一个java抽象类的实例. 题目: 不同几何图形的面积计算公式是不一样的,可是,它们具有的特性是一样 ...

  8. java abstract 继承_java 抽象类abstract的继承与实现

    [类.抽象类.接口.继承和对象(java)------------------------------------------------------------------------------- ...

  9. java 抽象类 模板_Java抽象类的构造模板模式用法示例

    搜索热词 本文实例讲述了Java抽象类的构造模板模式用法.分享给大家供大家参考,具体如下: 一 点睛 模板模式的一些简单规则. 抽象父类可以只定义需要使用的某些方法,而不能实现的部分抽象成抽象方法,留 ...

最新文章

  1. html脱离标准文档流,关于css脱离标准文档流的两种方式
  2. 算法导论 第六章 堆排序 习题6.5-8 k路合并排序
  3. IntelliJ IDEA for Mac工件包(artifact)中 Web facet resources 的模块名称有误,如何修改?
  4. Javascript特效:循环抽奖
  5. 【Django 2021年最新版教程8】操作Mysql数据库 mysqlclient安装和使用
  6. hashmap允许null键和值吗_【29期】Java集合框架 10 连问,你有被问过吗?
  7. SecureCRT鼠标双击或拖成变成Ctrl+C的解决办法
  8. Nvivo简介、学习经验分享及教程
  9. ACM程序设计之马拉松竞赛
  10. 常吃大蒜对人有什么好处与坏处?
  11. 华硕ac68u最佳设置_华硕AC68U路由器APP远程控制设置教程
  12. python分析txt文件_python解析文本文件
  13. java环境classpath_JAVA中的环境变量配置 PATH CLASSPATH
  14. 前端工程师简历怎么写才更容易进入面试呢?
  15. 根据文件MD5删除重复文件
  16. Java中的反射和枚举
  17. 「Python条件结构」将两个数从小到大输出
  18. 挑战用100美元赚100万美元
  19. C++ boost库介绍以及开发环境搭建
  20. 驱动氛围灯(底灯)配置

热门文章

  1. python性能测试台_性能测试平台效率优化的一次经验(python版)
  2. opencv 人脸识别_python基于openCV人脸识别18行代码实现
  3. python获取当前线程_Python爬虫(线程,进程)
  4. Spring框架学习-Spring和IOC概述
  5. LODOP在页面不同位置输出页眉页脚
  6. Android 解决手机unauthorized错误
  7. android-activity生命周期方法
  8. iOS 自带二维码扫描功能的实现
  9. 视频基础知识:浅谈视频会议中H.264编码标准的技术发展
  10. LeetCode(509)——斐波那契数(JavaScript)