今天在云和学院学了很多,我这次只能先总结一下C#中的虚方法和抽象的运用。

理论:

虚方法:

•用virtual修饰的方法叫做虚方法
•虚方法可以在子类中通过override关键字来重写
•常见的虚方法:ToString() Equals
抽象方法
•抽象类与抽象方法由abstract修饰
•abstract的使用注意
–抽象方法没有方法体
–抽象成员只能存在于抽象类中
–抽象类可以有非抽象成员
–抽象类的派生类必须实现抽象方法体
–抽象类只能用作基类,无法实例化
补充:

重写:不同对象对于同一个方法调用的不同行为(指不同对象收到相同消息时,会产生不同行为)
 
实操:

定义一个People的父类,包括Name,Gender,Age,和一个PeoHi 的虚方法,定义两个子类Teacher,包括Year,Salary两个属性和一个PeoHi方法;子类Student,包括StadyNum和一个PeoHi方法.

定义子类Teacher(Student子类 与Teacher定义方法相同,这里不在介绍)

在Main函数里输出

输出结果

抽象方法,定义一个父类Person,和子类Chinese

好了,今天就先写到这里了,下次再继续。加油!

C#中的虚方法和抽象方法(Thirteenth Day)的更多相关文章

  1. C#类、接口、虚方法和抽象方法0322

    虚拟方法和抽象方法有什么区别与联系: 1.抽象方法只有声明没有实现代码,需要在子类中实现:虚拟方法有声明和实现代码,并且可以在子类中重写,也可以不重写使用父类的默认实现. 2.抽象类不能被实例化(不可 ...

  2. 虚方法(virtual)\抽象方法(abstract)\接口(interface)的区别

    转自:https://www.cnblogs.com/fantaohaoyou/p/9402657.html 虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢? 1. 虚方法必须有实现部分,抽 ...

  3. C# 构造函数中调用虚方法的问题

    请看下面代码: using System; public class A{ public A(){ M1(); } public virtual void M1(){} } public class ...

  4. 避免在构造函数中调用虚方法(Do not call overridable methods in constructors)

    CLR中说道,不要在构造函数中调用虚方法,原因是假如被实例化的类型重写了虚方法,就会执行派生类型对虚方法的实现.但在这个时候,尚未完成对继承层次结构中所有字段的初始化.所以,调用虚方法会导致不可预测的 ...

  5. C#类和接口、虚方法和抽象方法及值类型和引用类型的区别

    1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽 ...

  6. C#z中的虚方法,抽象类

    1.虚方法 我在这动物类中定义了一个虚方法 Dosth class Animal { public int Aid; public string Name; public void SetAid(in ...

  7. C#虚方法和抽象方法的区别

    一,如下例子 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa ...

  8. C# 虚方法、抽象方法

    一.虚方法(virtual) 作用:当有一个定义在类中的函数需要在继承类中实现时,可以使用虚方法. 示例: class Person { public virtual void XXX() { Con ...

  9. C++类继承中的虚方法

    #include <bits/stdc++.h> using namespace std; class A { public: void Show() { cout << &q ...

随机推荐

  1. TJU 2944 Mussy Paper 最大权闭合子图

    传送门 给你一些东西,  每个东西有一个值,有正有负. 在给一些关系, 选了其中一个物品, 和他有关系的也必须全都选上, 关系是单向的. 问最后的最大价值是多少, 如果小于0输出“   **** ”( ...

  2. POJ 1823 Hotel 线段树

    题目链接 线段树的区间合并. 和上一题差不多....第三种操作只需要输出maxx[1]的值就可以. #include <iostream> #include <vector> ...

  3. python pdb调试以及sublime3快捷键设置

    python pdb调试以及sublime3快捷键设置 pdb调试 如果对gdb比较熟悉的话,pdb就很容易上手.以一个demo快速了解常用的调试命令. def test(a): while True ...

  4. android 布局常用混淆属性

    1.如何控制某一控件在父控件中的相对位置呢? 在Android系统中提供了layout_margin,用来控制某一控件边缘相对于父控件的边距. 其中, android:layout_marginTop ...

  5. 认识和理解css布局中的BFC

    认识和理解css布局中的BFC BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用. Block Formatting Con ...

  6. BZOJ 1177 [Apio2009]Oil(递推)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1177 [题目大意] 给出一个矩阵,从中选出3个k*k且不相交的矩阵,使得其总和最大 [ ...

  7. swith

    “开关”(Switch)有时也被划分为一种“选择语句”.根据一个整数表达式的值,switch语句可从一系列代码选出一段执行.它的格式如下: switch(整数选择因子) { case 整数值1 : 语 ...

  8. SASS组件开发

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  9. 【原创】ASP.NET Web开发,实现打印Log日志,步骤详解

    添加Log需要四步: 一.引用log4net.dll,详见附件:http://pan.baidu.com/s/1c0hab2g 二.项目根目录下,添加 log4net.xml <?xml ver ...

  10. EF的泛型封装 写的很好 转自Fly_Elephant http://www.cnblogs.com/xiaofeixiang/p/4188600.html?utm_source=tuicool

    Entity Framework本身的增删改查其实 已经很方便了,不过做项目的时候用的多了也就觉得有点累了,每个业务实体基本上都涉及到到了增删改查这四个基本的要素,至于封装每个公司可能都不一样,接口, ...