回顾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方法的使用,现在 ...
随机推荐
- [置顶]
Netty学习总结(1)——Netty入门介绍
1.Netty是什么? Netty是一个基于JAVA NIO类库的异步通信框架,它的架构特点是:异步非阻塞.基于事件驱动.高性能.高可靠性和高可定制性. 2.使用Netty能够做什么? 开发异步.非阻 ...
- 2015 Multi-University Training Contest 2 Friends
Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- 传纸条 NOIP2008 洛谷1006 二维dp
二维dp 扯淡 一道比较基本的入门难度的二维dp,类似于那道方格取数,不过走过一次的点下次不能再走(看提交记录里面好像走过一次的加一次a[i][j]的也AC了,,),我记得当年那道方格取数死活听不懂, ...
- [Javascript] Transduce over any Iteratable Collection
So far we've been transducing by manually calling .reduce() on arrays, but we want to be able to tra ...
- UVALive 6084 Happy Camper(数学题)
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- poj--2385--Apple Catching(状态dp)
Apple Catching Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submi ...
- [HNOI2008] GT考试(DP+矩阵快速幂+KMP)
题目链接:https://www.luogu.org/problemnew/show/P3193#sub 题目描述 阿申准备报名参加 GT 考试,准考证号为 N 位数 X1,X2…Xn(0 <= ...
- php7安装memcache 和 memcached 扩展
php7安装memcache 和 memcached 扩展 标签(空格分隔): php memcache和memcached区别 memcache:http://pecl.php.net/packag ...
- 6.boostTCP通信
客户端 #include <boost/asio.hpp> #include <iostream> #include <stdlib.h> using namesp ...
- Windows 相关
Open the Windows Update troubleshooter If your computer is having problems finding and installing op ...