对C#继承、多态的理解
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#继承、多态的理解的更多相关文章
- java四大特性理解(封装继承多态抽象)
封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口.面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的对象,这些对象通过一个受保护的接口访问其他对象.封装是一 ...
- Java基础之理解封装,继承,多态三大特性
目录 封装 继承 多态 封装 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 代码理解 publ ...
- Java中的继承、封装、多态的理解
Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...
- java多态的理解
面向对象语言中的类有三个特征,封装.继承.多态.封装与继承很好理解,那什么是多态呢? 1.什么是多态? 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同 ...
- C++学习笔记 封装 继承 多态 重写 重载 重定义
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- java面向对象(封装-继承-多态)
框架图 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程强调的是功能行为 面向对象将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向对象的特点 ...
- 浅谈学习C++时用到的【封装继承多态】三个概念
封装继承多态这三个概念不是C++特有的,而是所有OOP具有的特性. 由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念. 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分 ...
- Swift - 43 - 继承, 多态, 析构函数
import Foundation /* 什么叫继承: 可以简单理解为一个类可以从它的父类或者基类中直接拿属性或者方法去使用 冒号":"表示两者之间的继承关系 */ class P ...
- Java继承多态中的方法访问权限控制
java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...
随机推荐
- Fastbin attack
Fastbin Attack 暂时接触到了两种针对堆分配机制中fastbin的攻击方式,double free和house of spirit Double free 基本原理 与uaf是对free之 ...
- jQuery---淘宝精品案例
淘宝精品案例 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UT ...
- 2019-08-18 纪中NOIP模拟A组
T1 [JZOJ6309] 完全背包 题目描述
- 从零DIY机械键盘/主控方案
自从有了第一套机械键盘,先后修改了接口方案,安装了LED灯等,但是始终无法满足自己的DIY欲望. 于是想到最简单的方法就是用现成的主控,而主控来源于废弃的键盘,如下图: 这种主控也是矩阵方式,只需要测 ...
- JUC之CountDownLatch和CyclicBarrier的区别 (转)
CountDownLatch和CyclicBarrier的功能看起来很相似,不易区分,有一种谜之的神秘.本文将通过通俗的例子并结合代码讲解两者的使用方法和区别. CountDownLatch和Cycl ...
- 【Unity|C#】基础篇(11)——内置的泛型委托(Action/Func/Predicate)
[Action] 无返回值 的泛型委托,可以有0~16个参数(函数重载) public delegate void Action(); // 无参数 public delegate void Acti ...
- iOS13禁用深色模式
全局禁用深色模式(暗黑模式)在Info.plist中增加UIUserInterfaceStyle,值为Light,如下 <key>UIUserInterfaceStyle</key& ...
- 边捆绑: Content Importance Based Edge Bundling for Graph Visualization
Problem 当图所要表达的信息较多时, 图中可能会充满交叉的线[1-2], 甚至整个显示空间都被点.线所覆盖, 这时想通过观察来获取图中的重要信息将会变得非常困难, 这种现象称为图的视觉混乱. K ...
- FPM 0.08不能运行破解办法……
FPM_0.080.rar 破解办法:用UltraEdit打开FPM.exe,查找"33 C0 E9 F2"(注意中间有空格)将33改为8B,F2改为00
- STM32------SYSCLK
重要的时钟:PLLCLK, SYSCLK, HCKL, PCLK1, PCLK2 之间的关系要弄清楚; 1.HSI:高速内部时钟信号 stm32单片机内带的时钟(8M频率)精度较差2.H ...