今天主要说一下基类中的方法和属性,既然把这东西放进了基类,那有一点可以肯定的是,它们是公用的,这种公用的实现可能由基类自己实现,也可能是子类去实现,对于这句话,会有三种情况:(以方法以例)

1 基类中的方法,对于所有子类都是一样的,并且子类不能修改这个方法,这时,我们的方法这样定义

1 protected void CannotModifyMethod()
2 {
3   ...
4 }

2 基类中的方法,对于所有子类都是一样的,但子类可能根据自己的逻辑,去实现自己那块业务,这时,我们的方法这样定义

1 protected virtual void OverrideMethod()
2 {
3   ...
4 }

3 基类中的方法,完成由子类去实现,每个子类都有自己的业务逻辑,基类本身不能控制它,这时,我们的方法这样定义

1 protected abstract void AbstractMethod();

OK,对于基类中出现的方法大体就这三种情况,我们在设计基类时,一定要根据实际情况去选择最佳的方法,而不要动不动virtual,时不时就来个abstract,当你使用每一个修饰符时,都应该明确知道它的含义,及你为什么要使用它,这样才能把程序写的更加完美,另一方面也能看出你的程序是否“真正的面向对象”!

下面的图像,展现了一个操作基类的CURD操作,它们都是virtual的,为什么?因为它们是可以被子类根据自己的逻辑去覆写的。

感谢您的阅读!

第三回 基类中的方法,应该根据实际情况,虚的虚,抽象的抽象!相关推荐

  1. 第四回 基类中的修饰符,应该根据你对架构的理解去定义它们,没有绝对的

    基类中的修饰符,其实就是C#里的那几种修饰符,public ,proteced,internal,privat这四种基础类型,当然也还一个组合类型internal protected,它们都是C#里最 ...

  2. 《Python面向对象编程指南》——1.2 基类中的__init__()方法

    本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...

  3. 继承(四):new方法都与基类中方法无关

    using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Inher ...

  4. Python笔记_23_正则相关函数_类中的方法_装饰器_异常

    文章目录 正则相关函数 search 和 match split 切割 sub 替换 finditer 匹配字符串中相应内容,返回迭代器 compile 指定一个统一的匹配规则 正则表达式的修饰符 类 ...

  5. C++多继承中重写不同基类中相同原型的虚函数

    在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA  {  public:  virtual void TestA();  };  class ...

  6. Java反射机制demo(五)—获得并调用一个类中的方法

    这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和运行结果.获取所有的方法使用Class类中getMetho ...

  7. Python类中公开方法、私有方法和特殊方法的继承原理

    在Python中,对象的私有成员在类外部.派生类或程序中无法直接访问,但是可以通过"对象名._类名__私有成员名"这样一种特殊的形式来访问. 基类的构造方法和公开方法可以在类的外部 ...

  8. java matcher.group_详解正则表达式Matcher类中group方法

    前言 同事把一个excel表给我,里面的数据大概有几千的样子吧.自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去.这是就涉及到用脚本来进行操作了,于是自己搞 ...

  9. thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)

    前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...

最新文章

  1. ERROR 1820 (HY000): Unknown error 1820,ERROR 1046 (3D000):
  2. 【maven】Missing artifact javax.jms:jms:jar:1.1:compile
  3. string.format大全
  4. 一套完整的java程序_编写一个完整的Java Application 程序
  5. 洛谷P1130 红牌
  6. 计算一个人出生了多少天(炸窝)
  7. Ubuntu14升级MySQL
  8. linux运维 对比 网络_linux - 终端下查看网络实时吞吐量
  9. Visual Studio Code中的无标题(工作区)
  10. mongooes怎么链接mysql_如何使用Node + Mongoose连接远程MongoDB数据库
  11. jogbuild-common.xml:17: Cannot find /home/tsit/tio-software/jogamp/gluegen/make/gluegen-cpptasks.xml
  12. JVM监控及诊断工具命令行篇之jstat
  13. 中国省份区域json
  14. DFS POJ 1321 棋盘问题
  15. spring MVC 导出excel
  16. VBA学习笔记3-数据结构类型SortedList
  17. 怎么做才能使校园网让多台电脑使用?
  18. CAD梦想画图中的“阵列命令”
  19. PowerDesigner创始人的个人成长经历
  20. 2011-09-06 [plus_format_fck.js代码]

热门文章

  1. awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入
  2. 聊聊hystrix的semaphore.maxConcurrentRequests属性
  3. [Python]学习基础篇:面向对象编程
  4. Azure角色管理技巧和工具
  5. C Primer Plus 第8章 字符输入/输出和输入确认 8.11 编程练习答案
  6. PHP环境 PDOException PDOException: could not find driver
  7. Discuz修改笔记-Discuz代码的使用
  8. 哲学经典名句[zt]
  9. C++0x 通用属性
  10. 【暖*墟】#洛谷网课1.30# 树上问题