这是一个关于应该使用继承方式的简单问题 .

考虑到我必须提供业务逻辑来打印'foo'和'bar'并且我有两个类的层次结构:一个具有仅打印'foo'的方法和另一个首先扩展并具有打印'bar'的方法 . 在这两个类中,我有一个名为 necessaryMethod() 的方法,负责调用那些打印'foo'和'bar'的方法 .

我用两种方法实现它的方式:

第一种方法是让基类做一些事情,派生类利用它 . 第二种方法是让基类不做任何事情(只提供实现)并将所有责任放在派生类上 .

请考虑以下代码:

Approach 1:

public class A{

protected void necessaryMethod(){

callFoo();

}

protected void callFoo(){

System.out.pritln("foo");

}

}

public class B extends A{

@Override

protected void necessaryMethod(){

super.necessaryMethod();

callBar();

}

protected void callBar(){

System.out.println("bar");

}

}

public class FooBarClass{

public static void main(String args[]){

B b = new B();

b.necessaryMethod();

}

}

Approach 2:

public abstract class A{

protected abstract void necessaryMethod();

protected void callFoo(){

System.out.pritln("foo");

}

}

public class B extends A{

@Override

protected void necessaryMethod(){

calFoo();

callBar();

}

protected void callBar(){

System.out.println("bar");

}

}

public class FooBarClass{

public static void main(String args[]){

B b = new B();

b.necessaryMethod();

}

}

哪种方法对于代码的可维护性和可读性是很好的(在大型软件产品/大类层次结构的上下文中;这只是一个例子)?

(这是一个通用的编程问题 . 我没有征求意见 . )

java派生类如何使用_继承:使用基类或派生类来做东西[关闭]相关推荐

  1. c mysql实体类生成工具_【干货分享】C# 实体类生成工具

    前言: 项目实战中不论是业务编码还是通用编码,总会归纳出一些通用的工具类.放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码.所以利用了工作之余的时间,将这些散落在多个项目中精致优雅的工具类,归纳起来形 ...

  2. python枚举类的意义_用于ORM目的的python枚举类

    编辑问题 我正在尝试创建一个类工厂,它可以生成具有以下属性的枚举类: >从列表中初始化类 允许值(即,它) 自动生成!). > Class创建自己的一个实例 对于每个允许的值. >类 ...

  3. python传递类的实例_使用Python将变量从一个类实例传递到另一个类实例?

    我在将一个类实例中定义的变量传递到另一个类实例时遇到问题.我对使用类比较陌生,但据我所知,变量可以通过简单地定义为类实例的一部分(例如在下面的示例中)从一个实例传递到另一个实例.虽然我以前使用过这个模 ...

  4. java 获取包名类名_获取指定包名下的所有类的类名(全名)

    参考来源: 以下代码一键运行: package test; import java.io.File; import java.io.IOException; import java.net.JarUR ...

  5. 零基础逆向工程24_C++_01_类_this指针_继承本质_多层继承

    1 类内的成员函数和普通函数的对比 1.1 主要是从参数传递.压栈顺序.堆栈平衡来总结. 1.参数传递:成员函数多传一个this指针 2.压栈顺序:成员函数会将this指针压栈,在函数调用取出 3.堆 ...

  6. java实验 类和对象_java 实验(三) 类和对象

    一.实验目的和要求 1. 掌握类的构造函数的重载 2. 深入理解类和对象 3. 学习NetBeans中UML项目的创建类并生成相应代码的方法 二.实验内容和原理 设计一个复数类,能够完成复数之间的基本 ...

  7. java科技论文20000字_科学小论文范文 科学小类毕业论文开题报告范文2万字

    <科学小活动,精彩大世界> 该文是科学小类论文范文集与科学类毕业论文开题报告范文. [摘 要]作为幼儿园五大领域活动之一的科学教育活动,其本身所蕴含的自然科学属性更加强调培养儿童自主探究和 ...

  8. java设置虚基类的目的_设置虚基类的目的是( )。

    有pqueue.h如下 #ifndef HEADER_PQUEUE_H#define HEADER_PQUEUE_Htypedef struct_pqueue{    pitem *items;    ...

  9. python中的类怎样理解_深入理解Python中的元类(metaclass)

    如何理解python当中的元类 把这个提到外面 class __metaclass__(type): " simple custom metaclass to block adding ne ...

最新文章

  1. 首个最全的MongoDB 3.6 全览
  2. PHP几个防SQL注入攻击自带函数区别
  3. servlet post 返回值是一个对象_Servlet第二天
  4. 获取客户端浏览器信息
  5. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]
  6. php scope权限管理,关于微信公众号scope参数错误或没有scope权限的解决方案
  7. matlab简单分析矩阵乘法——一阶行向量乘一阶列向量
  8. 强化学习在游戏中的作用_游戏中的强化学习
  9. PLC/WINCC实现远程监控的方法
  10. numpy中的array函数
  11. Ubuntu中报错:failed to create hard link
  12. install par
  13. python直角三角形的两个直角边、求斜边_直角三角形斜边公式计算器 两个直角边边长的平方加起来等...
  14. 如何手动启动消防广播_消防应急广播的设置要求是怎样的?
  15. 数学在计算机方面的应用论文参考文献,数学论文参考文献
  16. Xposed模块开发指南
  17. Linux下移动硬盘,创建windows,ntfs分区并挂载
  18. 剑指Offer全题解—Java版本
  19. 轻量级网络--ShuffleNet论文解读
  20. python 英语分词_用几十行代码实现python中英文分词

热门文章

  1. Angular FormBuilder的工作原理
  2. Kyma Lambda Function的GATEWAY_URL是做什么的?
  3. 使用代码创建SAP BRF ruleset
  4. sap.ca.scfld.md.ComponentBase.extend
  5. settype where used list - set type where use list - equipment download environme
  6. SAP ABAP实用技巧介绍系列之 template的match顺序
  7. 使用ABAP事务码STAD分析Asynchronous RFC call性能
  8. SAP Fiori Launchpad Contact Support的按钮启用逻辑
  9. SAP Spartacus如何使用自定义的Cart Service
  10. SAP云平台CloudFoundry的Access Token和refresh token