第三回 基类中的方法,应该根据实际情况,虚的虚,抽象的抽象!
今天主要说一下基类中的方法和属性,既然把这东西放进了基类,那有一点可以肯定的是,它们是公用的,这种公用的实现可能由基类自己实现,也可能是子类去实现,对于这句话,会有三种情况:(以方法以例)
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的,为什么?因为它们是可以被子类根据自己的逻辑去覆写的。
感谢您的阅读!
第三回 基类中的方法,应该根据实际情况,虚的虚,抽象的抽象!相关推荐
- 第四回 基类中的修饰符,应该根据你对架构的理解去定义它们,没有绝对的
基类中的修饰符,其实就是C#里的那几种修饰符,public ,proteced,internal,privat这四种基础类型,当然也还一个组合类型internal protected,它们都是C#里最 ...
- 《Python面向对象编程指南》——1.2 基类中的__init__()方法
本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...
- 继承(四):new方法都与基类中方法无关
using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace Inher ...
- Python笔记_23_正则相关函数_类中的方法_装饰器_异常
文章目录 正则相关函数 search 和 match split 切割 sub 替换 finditer 匹配字符串中相应内容,返回迭代器 compile 指定一个统一的匹配规则 正则表达式的修饰符 类 ...
- C++多继承中重写不同基类中相同原型的虚函数
在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: virtual void TestA(); }; class ...
- Java反射机制demo(五)—获得并调用一个类中的方法
这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和运行结果.获取所有的方法使用Class类中getMetho ...
- Python类中公开方法、私有方法和特殊方法的继承原理
在Python中,对象的私有成员在类外部.派生类或程序中无法直接访问,但是可以通过"对象名._类名__私有成员名"这样一种特殊的形式来访问. 基类的构造方法和公开方法可以在类的外部 ...
- java matcher.group_详解正则表达式Matcher类中group方法
前言 同事把一个excel表给我,里面的数据大概有几千的样子吧.自己需要把里面的数据一个一个拿出来做一个http请求,对得到的结果进行过滤,然后再写到上面去.这是就涉及到用脚本来进行操作了,于是自己搞 ...
- thymeleaf 调用java,thymeleaf模板引擎调用java类中的方法(附源码)
前言 由于开源了项目的缘故,很多使用了My Blog项目的朋友遇到问题也都会联系我去解决,有的是把问题留在项目的issue里提出,有的是在我的私人博客里留言,还有的则是直接添加我的qq来找我讲自己遇到 ...
最新文章
- ERROR 1820 (HY000): Unknown error 1820,ERROR 1046 (3D000):
- 【maven】Missing artifact javax.jms:jms:jar:1.1:compile
- string.format大全
- 一套完整的java程序_编写一个完整的Java Application 程序
- 洛谷P1130 红牌
- 计算一个人出生了多少天(炸窝)
- Ubuntu14升级MySQL
- linux运维 对比 网络_linux - 终端下查看网络实时吞吐量
- Visual Studio Code中的无标题(工作区)
- mongooes怎么链接mysql_如何使用Node + Mongoose连接远程MongoDB数据库
- jogbuild-common.xml:17: Cannot find /home/tsit/tio-software/jogamp/gluegen/make/gluegen-cpptasks.xml
- JVM监控及诊断工具命令行篇之jstat
- 中国省份区域json
- DFS POJ 1321 棋盘问题
- spring MVC 导出excel
- VBA学习笔记3-数据结构类型SortedList
- 怎么做才能使校园网让多台电脑使用?
- CAD梦想画图中的“阵列命令”
- PowerDesigner创始人的个人成长经历
- 2011-09-06 [plus_format_fck.js代码]
热门文章
- awk 系列Part7:awk 怎么从标准输入(STDIN)读取输入
- 聊聊hystrix的semaphore.maxConcurrentRequests属性
- [Python]学习基础篇:面向对象编程
- Azure角色管理技巧和工具
- C Primer Plus 第8章 字符输入/输出和输入确认 8.11 编程练习答案
- PHP环境 PDOException PDOException: could not find driver
- Discuz修改笔记-Discuz代码的使用
- 哲学经典名句[zt]
- C++0x 通用属性
- 【暖*墟】#洛谷网课1.30# 树上问题