11月3日 阴天

前两天看某位大牛写的程序,对于C#多态有困惑,今天一大早来查阅了不少资料,自认为有了一个基本的认知,记录下来,一扫今天这阴霾的天气

----------------------------------------------------------------- 我是华丽的分割线 ------------------------------------------------------

1、类的创建:

  • 首先用abstract创建抽象父类,在父类钟添加virtual虚方法
  • 创建子类继承父类,子类中用override重写父类钟的方法
  • 声明一个父类,实例化的时候分别用子类实例化,实现多态
  • 实现多态就是在父类的基础上声明多个子类,多个子类对父类分别有不同的方法来实现

2、上代码:

 1     //子类3
2 public class Japanese : Person
3 {
4 public override string CallName(string name)
5 {
6 return "我是日本人,我的名字叫:" + name;
7 }
8 }
9 //子类2
10 public class Korea : Person
11 {
12 public override string CallName(string name)
13 {
14 return "我是朝鲜人,我的名字叫:" + name;
15 }
16 }
17 //子类1
18 public class Chinese : Person
19 {
20 public override string CallName(string name)
21 {
22 return "我是中国人,我的名字叫:" + name;
23 }
24 }
25 //父类
26 public abstract class Person
27 {
28 public virtual string CallName(string str) { return str; }
29 }
1 private void button1_Click(object sender, EventArgs e)
2 {
3 Person[] person = {new Chinese(),new Korea(),new Japanese()};
4 foreach (Person p in person)
5 {
6 MessageBox.Show(p.CallName("张三"));
7 }
8 }

3、继承与多态的理解:

  • 一个类用abstract关键字修饰那这个类就是抽象类
  • 抽象类不能被实例化
  • 抽象方法不能有方法体,连{ }都不能有
  • 抽象方法只能存在于抽象类中,但是抽象类中可以有非抽象方法
  • 抽象类不能是静态类、密封类
  • 抽象类中的所有方法必须被子类重写,除非子类也是抽象类
  • 抽象方法存在的目的:为了约束类中方法存在的形式(参数列表、return类型)
  • base关键字可以用来访问当前对象的基类对象

(PS:第3条的总结参考了网名“刘二雄”的博文,在此表示感谢~)

-------------------------------------------------------------------------------------------------------------------------------------

对C#继承、多态的理解的更多相关文章

  1. java四大特性理解(封装继承多态抽象)

    封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...

  2. Java基础之理解封装,继承,多态三大特性

    目录 封装 继承 多态 封装 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 代码理解 publ ...

  3. Java中的继承、封装、多态的理解

    Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...

  4. java多态的理解

    面向对象语言中的类有三个特征,封装.继承.多态.封装与继承很好理解,那什么是多态呢? 1.什么是多态? 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同 ...

  5. C++学习笔记 封装 继承 多态 重写 重载 重定义

    C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...

  6. java面向对象(封装-继承-多态)

    框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...

  7. 浅谈学习C++时用到的【封装继承多态】三个概念

    封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...

  8. Swift - 43 - 继承, 多态, 析构函数

    import Foundation /* 什么叫继承: 可以简单理解为一个类可以从它的父类或者基类中直接拿属性或者方法去使用 冒号":"表示两者之间的继承关系 */ class P ...

  9. Java继承多态中的方法访问权限控制

    java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...

随机推荐

  1. The sklearn preprocessing

    Recently, I was writing module of feature engineering, i found two excellently packages -- tsfresh a ...

  2. 小程序y轴拖动

    需求场景 小程序在y轴方向 拖动 一小段距离 解决方案 1.监听 元素 2.绑定 点击 和 移动 事件 3.数据处理 代码 <view animation="{{item.animat ...

  3. 洛谷P1551 亲戚 (并查集模板题)

    链接 https://www.luogu.org/problemnew/show/P1551 代码 #include<bits/stdc++.h> using namespace std; ...

  4. LaTeX技巧012:LaTeX 插图加载宏包

    LaTeX 插图加载宏包.支持 LaTeX - DVIPDFMx; pdfLaTeX; XeLaTeX 三种编译方式,支持 eps/pdf/jpg/png 等图片格式. % Put this snip ...

  5. 通过Process启动外部程序

    #region Process //声明一个程序类 System.Diagnostics.Process Proc; try { //声明一个程序信息类 System.Diagnostics.Proc ...

  6. [USACO12DEC]First!

    Description Luogu3065 Solution 首先,一个串要是最小的,别的串不能是它的前缀,且和它有相同前缀的串字典序都比他小. Trie树是显然要用的,难点在于如何判断能否最小.其实 ...

  7. python3练习100题——031

    原题链接:http://www.runoob.com/python/python-exercise-example31.html 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, ...

  8. PHP csv文件30w+数据导入mysql数据库

    <?php class Add { public function data() { ini_set('memory_limit', '-1'); //PHP内存设置 $handle=fopen ...

  9. Spring家族几大插件

    Spring家族很庞大,从最早先出现的服务于企业级程序开发的Core.安全方面的Security.到后来的作为各种数据源桥梁的Data.最近几年很火的Boot,以及最新推出的正在蓬勃发展的Cloud( ...

  10. android 获取webview内容真实高度(webview上下可滚动距离)

    正常获取: mainWebView.getContentHeight()//获取html高度 mainWebView.getScale()//手机上网页缩放比例 mainWebView.getHeig ...