今天坐班车的时候,突然就想起来这俩个货了;仔细缕缕,居然越缕越乱较:

上代码吧:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace VirtualAndAbstract
{
class Program
{
static void Main(string[] args)
{
#region MyRegion
//people是 爹:子要在爹的灵魂(抽象)庇佑保护下生存;子在功夫上比爹更高一筹
student stu = new student();//student是子
People p = stu;
p.study();//这是儿子继承爹的心法;
Console.WriteLine(stu.get());//这里是儿子直接拿着老子的兵器,斩杀天下负心汉
Console.ReadKey();
#endregion } #region abstract大法好
public abstract class People
{
public abstract void study();
public abstract int Add();
public virtual string VirtualMethod()
{
return "我是abstract下的virtual方法,我必须要有主体";
}
//在abstract下,非abstract的方法要有方法体:get()和VirtualMethod()
public string get()
{
return "Prozkb";
}
}
public class student : People
{
//爹留下的心法(抽象方法),子要把它全部(老子的家当不能丢)实物化(重载)下来,子也可以对爹的心法进行改良
//
//爹留下的兵器(非抽象方法),子可以直接拿过来杀敌
public override void study()
{
Console.WriteLine("hhxx");
} public override int Add()
{
throw new NotImplementedException();
} }
#endregion
}
}
 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace VirtualAndAbstract
{
class Program
{
static void Main(string[] args)
{
#region MyRegion
FatherClass father = new FatherClass();
SonClass son = new SonClass();
FatherClass baba = new SonClass();
father.GetAge(); Console.WriteLine(son.GetName());
son.GetAge(); Console.ReadKey();
#endregion
}
#region virtual
public class FatherClass
{
public virtual string GetName()
{
return "方法体";
}
public virtual string SETName()
{
return "SET方法体";
} public void GetAge()
{
Console.WriteLine("年方二八");
} }
public class SonClass : FatherClass
{
//儿子不需要把得的所有虚方法重载;这一点还是比abstract那个爹类有好多了
//
public override string GetName()
{
return base.GetName();//这里的base相当于爹(FatherClass)
}
#region 儿子重写方法,不能改变老子的参数;不然会走火入魔 //public override string GetName(string name)
//{
// return "我把老子的心法改良了,我就是"+name;
//}
#endregion public static string SonGDCQ()
{
return "我是儿子自创的乾坤大法:干倒苍穹;俺爹不能用我";
} //错误:“VirtualAndAbstract.Program.SonClass.GetStr()”是抽象的,但它包含在非抽象类“VirtualAndAbstract.Program.SonClass”中
//所以,抽象方法要放在抽象类中
// public abstract string GetStr(); }
#endregion
}
}

回顾Abstract和Virtual的用法的更多相关文章

  1. c#中的interface abstract与virtual介绍

    abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现  interface用来声明接口1.只提供一些方法规约, ...

  2. C#中Abstract和Virtual的区别

    c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰 ...

  3. C#中Abstract和Virtual

    C#中Abstract和Virtual 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Vi ...

  4. Abstract和Virtual和interface , 派生类中重写 override / new关键字

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...

  5. C#基础知识系列七(base、this、new、override、abstract、virtual、static)

    前言 本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base.this.new.override.abstract.virtual以及针对static字段和s ...

  6. 基础知识系列☞Abstract和Virtual→及相关知识

    转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...

  7. [C#] 區分 abstract、virtual、override 和 new

    abstract.virtual.override和new是在類別的繼承關係中常用的四個修飾方法的關鍵字,在此略作總結. 1. 常用的中文名稱: n   abstract => 抽象方法. n  ...

  8. c#中的interface abstract与virtual

    interface用来声明接口1.只提供一些方法规约,不提供方法主体  如  public interface IPerson {  void getName();//不包含方法主体  }2.方法不能 ...

  9. C#中Abstract和Virtual 【转】

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在 ...

随机推荐

  1. python 模块一览

    一个模块可以对应一个文件 同一个模块,可以import多次,但只会被导入一次 模块的导入顺序 导入模块写在文件最上面 自己写的和内置的以及扩展的分开 顺序:内置,扩展,自己写的 按字母大小写排序 一行 ...

  2. hdu 2102 A计划 具体题解 (BFS+优先队列)

    题目链接:pid=2102">http://acm.hdu.edu.cn/showproblem.php?pid=2102 这道题属于BFS+优先队列 開始看到四分之中的一个的AC率感 ...

  3. Codeforces Round #271 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/474 A题:Keyboard 模拟水题. 代码例如以下: #include <iostream> #include ...

  4. VS2008 集成Lua解释器

    1. 登陆官网下载源代码 -> www.lua.org -> get started ->  installing  选择系统类型(这里是Windows的,所下面载 luaDist) ...

  5. glm编译错误问题解决 formal parameter with __declspec(align(&#39;16&#39;)) won&#39;t be aligned

    參考:http://stackoverflow.com/questions/25300116/directxxmmatrix-error-c2719-declspecalign16-wont-be-a ...

  6. EBS OAF开发中怎样通过ReferenceAO进行验证

    EBS OAF开发中怎样通过ReferenceAO进行验证 (版权声明.本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) Reference AO 除了用于 ...

  7. [BZOJ3884] 上帝与集合的正确用法 (欧拉函数)

    题目链接:  https://www.lydsy.com/JudgeOnline/problem.php?id=3884 题目大意: 给出 M, 求 $2^{2^{2^{2^{...}}}}$ % M ...

  8. java操作文件的创建、删除、遍历

    java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...

  9. SQL SERVER中求上月、本月和下月的第一天和最后一天

    1.上月的第一天 SELECT CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) 2.上月 ...

  10. Android中的Junit测试

    在开发中Junit测试可以很方便的帮助开者尽可能早的发现并处理问题,而且使用也非常简单,只需要导入Junit测试相关的jar包并创建测试类,就可以对业务功能进行测试,而不用为了测试在代码中添加输出语句 ...