声明:本文章是为一个朋友而写的,昨天朋友遇见了问题,今天自己思考后,发现问题的本质就是面向对象的3大特性,所以才有了本文……

只要是有过学习高级编程语言的同学应该都知道面向对象这个思想(所谓的高级语言是只:C#/Java/C++,至于c语言是底层语言,底层语言的难度更高……)。

面向对象的3 大特性封装、继承、多态。咱们今天用代码的形式来解释一下这名声赫赫的3大特性。

1、  封装:大家装软件、游戏、甚至操作系统经常会遇见dll的文件,这其实就是封装好的代码,你看不见具体的代码,在程序运行的时候,代码会自己根据规则进入对应的dll文件来获取相应的代码来执行,我做了一个小例子如下:

对家关注一下大红对勾的地方,Helper是一个类库的项目,怎么看看类库项目的输出是啥

大家看到了输出类型是【类库】,也就是咱们文章开头提到的dll文件。接下来看看FatherClass这个项目(也是一个类库),这个项目的引用中大红对勾的Helper就是咱们Helper项目。那么结论来了:将一些类放在一个类库项目中,类库项目输出为dll文件,再将该文件引用于其他项目这就是对代码的封装(还有一种封装是将属性、方法封装于一个类中,今天对这种封装不做讨论)。

2、继承:

在我的解决方案中有2个类库项目,下图打对沟的

FatherClass项目中有一个类FatherClass1,而ChildrenClass项目中有一个类ChildrenClass1,该类就继承自FatherClass1,看代码:

这样一来ChildrenClass1这个子类就拥有了FatherClass1父类中的所有方法:

这就是继承性,子类中可以啥都不写,只要他有父类,那么即使子类中什么属性和方法都没有,但是你在访问它时,你会发现,只要是它的父类有的它自己全都有(当然有一些属性和方法的访问级别会导致子类无法拥有,但这里不做讨论这种情况)

3、多态:

我们的子类将父类的FatherAdd这个方法重写了(相当于覆盖父类的方法体内容),因为在

父类的FatherAdd方法前有关键字virtual,这是虚方法的意思。

public virtual int FatherAdd(int i)

{

int x= Helper.Helper1.Add(i) + FatherInt;

return x;

}

咱们看看子类是怎么重写的:

public override int FatherAdd(int i)

{

return i + ChildInt;

}

看完代码,我们发现这里有一个关键字override,这正是重写的关键字。如果FatherClass1这个父类,有很多字子类,那么每一个子类都可以对FatherAdd这个方法重写(因为该方法是虚的),这样就体现了在继承过程中发生了多态这一现象(一句大家都听过的话——龙生九子各不相同,说的就是多态。)

下面我用流程图整体的说一下我写的这个demo.W君可以从这里开始看:

这个解决方案有4个项目前3个是类库,第4个是exe.他们之间的调用关系:

WindowEXE应用程序调用ChildrenClass和FatherClass

ChildrenClass调用FatherClass

FatherClass调用Heleper

其中ChildrenClass这个类库就是你要新建并且编码的类库,编写完成后的类库生成dll文件,放入exe程序的调用dll的路径下面。

转载于:https://www.cnblogs.com/JK1989/p/6688434.html

面向对象的3 大特性封装、继承、多态。咱们今天用代码的形式来解释一下这名声赫赫的3大特性。...相关推荐

  1. Day55-每日一道Java面试题-Java 面向对象编程三大特性: 封装 继承 多态

    Java 面向对象编程三大特性: 封装 继承 多态 封装 封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果属性不想被外界访问,我们大可不必提供方法给外界访问.但是如果一个类没有 ...

  2. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  3. 深入理解Java面向对象三大特性 封装 继承 多态

    1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...

  4. Java面向对象三大特性(封装继承多态)解释及案例

    文章目录 包 包基本语法 命名规则 命名规范 导入包实例 访问修饰符 面向对象编程-封装 面向对象编程-继承 super关键词 super和this的比较 方法重写/覆盖 (override) 注意事 ...

  5. 面向对象的三大特征:封装 继承 多态

    封装: 封装的概念: 代码的整合, 封装的层次: 函数的封装: 把一组操作整合在一起 类的封装: 把属性和方法整合在一起 结构的封装:根据操作的性质(模型/控制操作/交互视图)进行结构设计封装 ...

  6. 【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )

    文章目录 I . 创建简单类 ( 整型字段 ) II . 创建简单类 ( 整型字段 + 字符串字段 ) III . 类方法定义 IV . 封装 V . 继承 VI . 多态 与 抽象类 I . 创建简 ...

  7. php对象的三大特征,关于php中面向对象的三大特征(封装/继承/多态)

    最近在学习php的过程中发现它其实比java的语言要松散很多,而且很多人说上手比较容易,但是智言我个人并不是很认同这样的观点,因为其实java的整个语法规则都非常的有条有理,虽然函数很多,但是至少经常 ...

  8. c语言编程 菲薄拉,C语言设计模式-封装-继承-多态

    快过年了,手头的工作慢慢也就少了,所以,研究技术的时间就多了很多时间,前些天在CSDN一博客看到有大牛在讨论C的设计模式,正好看到了,我也有兴趣转发,修改,研究一下. 记得读大学的时候,老师就告诉我们 ...

  9. 大数据笔记8—java基础篇4(面向对象-封装-继承-多态)

    面向对象 一.面向对象 1.面向过程 1.2.举例 1.3.总结 二.面向对象 1.简述 2.举例 3.思想特点 2.1.类的定义格式 2.1.1.简述 2.2.2.格式 2.3.3.示例 三.类的使 ...

最新文章

  1. 何股票投资者十有九不赢?
  2. celery定时任务简单使用
  3. python向量化和c哪个快_在python中向量化6 for循环累积和
  4. Leetcode--75. 颜色分类
  5. 高颜值可定制在线作图工具-第二版
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的小说管理系统
  7. android交互xml代码,Unity 与Android的交互(Android studio)
  8. 【原创翻译】文本编辑器
  9. Javase-Concurrency
  10. 前端基础知识复习之html
  11. jsp用javascript关于浏览器静止后退,刷新
  12. ASM文件系统 数据如何写和读数据
  13. 如何把多个PDF页面合并成一页PDF - PDF页面合并器使用方法
  14. Win Server2003常见问题的解决然方案
  15. 还在烦恼ToF的误差问题?有人帮你找到解决方法了!
  16. 单片机编程技术学习攻略
  17. 初步认识数据库:数据、数据库、数据库管理系统、数据库系统分别是什么?
  18. Drupal主题开发指南(5.x)
  19. 什么是产品思维?优秀产品经理应该培养的九大思维
  20. 【java打地基】之——集合

热门文章

  1. 计算机配置参数格式错误,关于bios标准设置故障的实例详解
  2. 牛客网——歪脖子树下的灯
  3. 无货源淘宝店怎么做运营?
  4. 中国智能电视行业产销模式与投资策略分析报告2021年版
  5. jk+apache+tomcat整合 总结
  6. ubuntu 部署ATX
  7. 分享七天写好SCI初稿:
  8. WV.21-大数阶乘算法1-序
  9. Typescript ques:An index signature parameter type cannot be a union type. Consider using a mapped...
  10. 184. 部门工资最高的员工