9 abstract 和 Virtual 之间的差别

(1) abstract方法没有详细的实现。同一时候必须被覆写

(2) 虚(Virtual)方法能够没有详细的实现,也不一定必须覆写(虚方法定义时,能够没有详细的实现代码,可是必须创建方法体:即必须有方法的左右花括号)。

(3) 抽象方法不能够使用base.method()方式调用,可是虚方法是能够的

//定义一个抽象方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    abstract class absClass
    {
        public abstract void DisplayValue(string value);
    }
}

//在抽象类的子类中覆写抽象方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class absClassInherited : absClass
    {
        override public void DisplayValue(string value)
        {
            Console.WriteLine(value);
        }
    }
}

//定义一个虚方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class virtClass
    {
        public virtual void DisplayValue(string value)
        {
            Console.WriteLine(value);
        }
    }
}

//在子类中覆写虚方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVATwentyQuestions
{
    class virtClassInherited : virtClass
    {
        public override void DisplayValue(string value)
        {
            Console.WriteLine(value.ToUpper());
        }
    }
}
时间: 2024-11-04 19:01:49

9 abstract 和 Virtual 之间的差别的相关文章

9 abstract 和 Virtual 之间的区别

(1) abstract方法没有具体的实现,同时必须被覆写 (2) 虚(Virtual)方法可以没有具体的实现,也不一定必须覆写(虚方法定义时,可以没有具体的实现代码,但是必须创建方法体:即必须有方法的左右花括号). (3) 抽象方法不可以使用base.method()方式调用,但是虚方法是可以的 //定义一个抽象方法 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi

c#中的interface abstract与virtual介绍

abstract 与virtual : 方法重写时都使用 override 关键字,interface中的方法和abstract方法都要求实现 interface用来声明接口1.只提供一些方法规约,不提供方法主体.  如: 复制代码 代码如下: public interface IPerson{    void getName();//不包含方法主体} 2.方法不能用public abstract等修饰,无字段变量,无构造函数.3.方法可包含参数.  如 复制代码 代码如下: public in

C#基础知识(base、this、new、override、abstract、virtual、static)

前言 本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base.this.new.override.abstract.virtual以及针对static字段和static构造函数之间的执行问题. base关键字 base 关键字用于在派生类中实现对基类公有或者受保护成员的访问,但是只局限在构造函数.实例方法和实例属性访问器中: 调用基类上已被其他方法重写的方法. public class Father { public virtual void Say()

比较IE6, IE8, IE11 之间的差别

文档申明为  <!DOCTYPE html> 1.盒子模型 IE6:(使用 !DOCTYPE 声明指定 standards-compliant 模式) margin-left + border-left + padding-left + width + padding-right + border-right + margin-right , 如果没有声明为标准模式则为: margin-left + width + margin-rightIE8: 同IE6的标准模式IE11: 同IE6的标准

&quot;菜鸟&quot;与大神程序员之间的差别(转载)

前段时间看到一篇文章,写得很好,针对菜鸟与大神之间的差别做了很客观.很透彻的分析,现在将文章转载过来,原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=239356&highlight=%E8%8F%9C%E9%B8%9F “菜鸟”和“大神” 刚刚走出就业的程序员,技术是刚刚起步的基点.那下面我们就聊一聊有关技术 的东西.首先请您先想想这几个问题.现在社会上有很多程序员,CSDN就是我们程序员的家,那您是否可想过程序员为什么会有

C#中Abstract和Virtual[转载]

原文:http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html 在C#的学习中,容易混淆virtual方法和abstract方法的使用,现在来讨论一下二者的区别.二者都牵涉到在派生类中与override的配合使用. 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例的调用中,该虚

C#中Abstract和Virtual的区别

c# 中 Abstract和Virtual比较容易混淆,都与继承有关,并且涉及override的使用.下面讨论一下二者的区别: 一.Virtual方法(虚方法) virtual 关键字用于在基类中修饰方法.virtual的使用会有两种情况: 情况1:在基类中定义了virtual方法,但在派生类中没有重写该虚方法.那么在对派生类实例的调用中,该虚方法使用的是基类定义的方法. 情况2:在基类中定义了virtual方法,然后在派生类中使用override重写该方法.那么在对派生类实例的调用中,该虚方法

abstract 和 virtual的区别

(以下基于C#) 1.对方法修饰的区别 An abstract function can have no functionality. You're basically saying, any child class MUST give their own version of this method, however it's too general to even try to implement in the parent class. A virtual function, is bas

WebSockets和轮训实现之间的差别

如果你曾经使用过一种服务器端语言和一种数据库构建过一个网页聊天室,你会很想知道WebSockets和传统方式实现之间的差别. 传统聊天室通常是使用轮询方法实现的.客户端周期性地向服务器询问是否有更新.服务器回复给客户端更新的数据或者没有更新.然而,传统方法有以下问题.只有客户端主动询问服务器才能从服务器获得更新的数据.这意味着更新的数据会周期性延迟而且服务器的应答不够及时.如果我们想通过减少轮询过程来改进这个问题,则需要更大带宽,因为客户端需要不间断地向服务器发送请求. 下图展示了客户端和服务器