override virtual

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConstructCallVirtual
{
    class Program
    {
        static void Main(string[] args)
        {
            B b=new B();
        }
    }

    class A
    {
        public A()
        {
            Console.WriteLine("A()");
            DoSth();
        }
        public virtual void DoSth()
        {
            Console.WriteLine("A::DoSth()");
        }
    }

    class B:A
    {
        public B()
        {
            Console.WriteLine("B()");
            DoSth();
        }
        public virtual void DoSth()
        {
            Console.WriteLine("B::DoSth()");
        }
    }
//A()
//A::DoSth()
//B()
//B::DoSth()
//
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConstructCallVirtual
{
    class Program
    {
        static void Main(string[] args)
        {
            B b=new B();
        }
    }

    class A
    {
        public A()
        {
            Console.WriteLine("A()");
            DoSth();
        }
        public virtual void DoSth()
        {
            Console.WriteLine("A::DoSth()");
        }
    }

    class B:A
    {
        public B()
        {
            Console.WriteLine("B()");
            DoSth();
        }
        public override void DoSth()
        {
            Console.WriteLine("B::DoSth()");
        }
    }
//A()
//B::DoSth()
//B()
//B::DoSth()
//
}
时间: 2025-01-02 15:22:21

override virtual的相关文章

C#中类的继承 override virtual new的作用以及代码分析

继承中override virtual new的作用 virtual     父类中需要注明允许重写的方法: override   子类中必须显示声明该方法是重写的父类中的方法: new         子类中忽略父类的已存在的方法,“重写该方法“: C#中不支持隐式重写子类的方法 即如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法(new),而不能覆盖(override): 代码分析 这是一个base类A有很多子类: 1 class A 2 { 3 publ

C# -abstract, override, virtual, new

new声明的方法,当使用子类的类型来调用的时候,它会运行子类的函数,而如果类型是基类的话,被隐藏的基类函数会被调用. 而子类中函数使用override的时候,则当使用子类的类型来调用的是,它会运行子类的函数,类型是基类的时候,仍会调用子类函数.

[转][C++ 11]override and final - write clean and maintainable C++ code

原文: http://arne-mertz.de/2015/12/modern-c-features-override-and-final/ Today I write about a pair of less often discussed, less complicated features introduced in C++11, which are nevertheless useful. Both can provide some additional security and cla

C++11 之 override 关键字

1  公有继承 当派生类公有继承自 (public inheritance) 基类时,继承包含两部分:一是函数的"接口" (interface),二是函数的"实现" (implementation) 基类 Shape 中有三个不同形式的成员函数,分别代表公有继承的三种情况 class Shape { public: virtual void draw() const = 0; virtual void error(const std::string& msg

C#中Abstract和Virtual[转载]

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

c# 中virtual与abstract

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

c#中的interface abstract与virtual介绍

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

virtual方法和abstract方法的使用(轉載)

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

C#中Abstract和Virtual(转)

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