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

上代码吧:

 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. Javascript系列——对象元素的数组去重实现

    概要 这是一篇记录文,记录数组操作对象去重的实现. 需求 有这样一个数组 [{ _id: 123, name: '张三' },{ _id: 124, name: '李四' },{ _id: 123, ...

  2. 【codeforces 496E】Distributing Parts

    [题目链接]:http://codeforces.com/contest/496/problem/E [题意] 给你n个歌曲; 每个歌曲有一个需要声音的区间li,ri; 然后给你m个人; 每个人也有一 ...

  3. javascript位操作符右移>>>的妙用

    var len=arr.length>>>0; 在arr.length为null或undefined的时间,强制转换为0;

  4. Linux修改Linux默认打开方式

    从总体上讲 /etc/gnome/defaults.list 保存了全局的打开方式 /.local/share/applications/mimeapps.list 保存了个人的打开方式当两着不一致是 ...

  5. 对于startActivity的使用改进

    传统方式 一直以来,使用startActivity的方式就是例如以下: 比方从AActivity跳转到BActivity.那么我们是在AActivity中这样去写: Intent intent = n ...

  6. [Perl系列—] 2. Perl 中的引用使用方法

    Perl 中的引用,为什么要使用引用? 对于熟悉C语言的开发人员来说, 指针这个概念一定不陌生. Perl 的引用就是指针,能够指向变量.数组.哈希表甚至子程序. Perl5中的两种Perl引用类型为 ...

  7. POJ1338 & POJ2545 & POJ2591 & POJ2247 找给定规律的数

    POJ1338 2545 2591 2247都是一个类型的题目,所以放到一起来总结 POJ1338:Ugly Numbers Time Limit: 1000MS   Memory Limit: 10 ...

  8. Kali linux 2016.2(Rolling)中metasploit的端口扫描

    目前常见的端口扫描技术一般有如下几类: TCP  Connect.TCP SYN.TCP ACK.TCP FIN. Metasploit中的端口扫描器 Metasploit的辅助模块中提供了几款实用的 ...

  9. 当fastJson邂逅大写字段时

    在项目中遇到了一件令人头疼的事.使用fastJson反序列化时下面的Json时,得到对象属性总为null(如下图),可能细心的朋友一看就知道问题出在哪里,没错!问题就出在返回的字段首字母给大写了.fa ...

  10. 请问这个git上开源的node项目怎样才能在windows用Npm跑起来

    这个项目https://github.com/wechaty/we...以前都是用人家弄好的手脚架搞得es6,搞了2天搞起了es6还报错,错误信息在下面,然后我想请教大神:1我到底应该怎么弄才能在wi ...