回顾Abstract和Virtual的用法
今天坐班车的时候,突然就想起来这俩个货了;仔细缕缕,居然越缕越乱较:
上代码吧:
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的用法的更多相关文章
- c#中的interface abstract与virtual介绍
abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现 interface用来声明接口1.只提供一些方法规约, ...
- C#中Abstract和Virtual的区别
c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰 ...
- C#中Abstract和Virtual
C#中Abstract和Virtual 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Vi ...
- Abstract和Virtual和interface , 派生类中重写 override / new关键字
http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...
- C#基础知识系列七(base、this、new、override、abstract、virtual、static)
前言 本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base.this.new.override.abstract.virtual以及针对static字段和s ...
- 基础知识系列☞Abstract和Virtual→及相关知识
转载地址→http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的 ...
- [C#] 區分 abstract、virtual、override 和 new
abstract.virtual.override和new是在類別的繼承關係中常用的四個修飾方法的關鍵字,在此略作總結. 1. 常用的中文名稱: n abstract => 抽象方法. n ...
- c#中的interface abstract与virtual
interface用来声明接口1.只提供一些方法规约,不提供方法主体 如 public interface IPerson { void getName();//不包含方法主体 }2.方法不能 ...
- C#中Abstract和Virtual 【转】
http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在 ...
随机推荐
- Linux学习总结(12)——Linux必须学会的60个命令
Linux系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些管理信息,如文件的用户.文件的大小等. 文件可以是一封信.一个通讯录,或者是程序的源语句.程序 ...
- POJ 1975 Median Weight Bead
Median Weight Bead Time Limit: 1000ms Memory Limit: 30000KB This problem will be judged on PKU. Orig ...
- Android里使用正則表達式
在Android里怎样使用正則表達式: 以验证username为例.username一般字母开头,同意字母数字下划线.5-16个字节: String regEx = "^[a-zA-Z][a ...
- Html学习(三) 分类学习
代码: <h1>这是一级分类吗</h1> <h2>这是二级分类吗</h2> <h3>这是三级分类吗 </h3> 效果: 介绍: ...
- Constructor call must be the first statement in a constructor
super()和this ()不能共存.否则编译时会报异常. Constructorcall must be the first statement in a constructor 换句话说就是su ...
- 5. MongoDB基本操作语句
转自:http://blog.51cto.com/shanqiangwu/1653577 #MongoDB中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”. ...
- vs2015发布项目到虚拟主机组策略阻止csc.exe程序问题
这个问题之前碰到过一次,这次又碰到,就记录一下解决方法. 这个问题的产生的原因,据说是虚拟主机没有权限执行exe文件造成的,如果是独立服务器的话发布就不会出现这个问题. 使用VS2015发布web项目 ...
- 2013亚洲区域赛长沙站 ZOJ 3732 Graph Reconstruction
题目链接 Graph Reconstruction 题意 给你无向图每个点的度数, 问是否存在唯一解, 存在输出唯一解, 多解输出两个, 无解输出IMPOSSIBLE 思路 这里用到了 Havel-H ...
- LIMIT语句解析及本章简单回顾(二十九)
一.LIMIT 限制查询结果返回的数量 [LIMIT {[offset,] row_count | row_count OFFSET offset}] select * from user; 除了可以 ...
- vue.js技巧小计
//删除数组索引方法01 del (index) { this.arr.splice(index ,1); } //删除数组索引方法01 del (index) { this.$delete(this ...