`

虚方法笔记

    博客分类:
  • C#
阅读更多
没用virtual时的情况:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            B b = new B();//此时b的内容是:A.F()和B.F()
            A a = b; //此时a的内容是A.F()
            a.F();
            b.F();
            Console.Read();
        }
    }
    //创建类A
    class A
    { 
     public void  F()
     {
     Console.WriteLine ("A.F()");
     }
    }
    //创建类B 继承于A
    class B:A 
    {
        public new void F()
        {
            Console.WriteLine("B.F()");
        }
    }
}


使用virtual
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            C c = new C();//此时a b c的内容是c.F()
            B b = c;
            A a = c; 
            a.F();
            b.F();
            c.F();
            Console.Read();
        }
    }
    //创建类A
    class A
    { 
     public virtual void F()
     {
     Console.WriteLine ("A.F()");
     }
    }
    //创建类B 继承于A
    class B:A 
    {
        public override  void F()
        {
            Console.WriteLine("B.F()");
        }
    }
    //创建类C 继承于B
    class C : B
    {
        public override void F()
        {
            Console.WriteLine("C.F()");
        } 
    }
}
分享到:
评论

相关推荐

    C#面向对象笔记

    * 方法重写解决父类所定义方法在子类中不适用(虚方法)或父类没有实现(抽象方法),这样的方法子类可以重写,重写是为了满足子类对该方法的不同需求。 * 三种方法的重写:abstract(抽象)方法在子类中必须重写,...

    千锋C++笔记.zip

    7. **多态**:多态分为静态多态(函数重载、运算符重载)和动态多态(虚函数、纯虚函数、抽象类)。动态多态主要体现在运行时,通过指针或引用调用父类方法实现不同子类的特定实现。 8. **模板**:C++的模板功能...

    C++虚函数和多态学习笔记

    ### C++虚函数和多态学习笔记 #### 一、虚函数与多态的基本概念 在C++中,虚函数是实现多态的一种机制。多态是指同一个接口(方法名)可以有不同的行为表现,即“一种接口,多种方法”。通过虚函数,我们可以实现...

    C++笔记.rar C++笔记.rar

    3. **继承与多态**:C++支持单一继承和多重继承,子类可以继承父类的属性和方法,实现代码复用。多态性主要通过虚函数和纯虚函数实现,允许不同的子类对同一函数有不同的实现。 4. **模板**:C++的模板机制使得我们...

    腾讯方法读书笔记.pptx

    腾讯方法读书笔记知识点总结 一、战略思维 * 腾讯方法强调战略的重要性,认为只有当企业具备规模化和盈利性两个要素时,才能称其为成功的公司。 * 战略就是选择最合适的人并给他100%的授权和信任,选对人即战略。 ...

    c++学习笔记

    封装允许你将数据和操作数据的方法组合在一起,形成一个独立的实体。继承则是允许一个类(子类)从另一个类(父类)那里继承属性和行为,这样可以实现代码重用。多态则是通过虚函数和接口实现,使得不同的对象能够对...

    网络工程师学习笔记汇总(完整版).pdf

    "网络工程师学习笔记汇总(完整版).pdf" 本资源是一个网络工程师的学习笔记汇总,涵盖了计算机系统、操作系统、嵌入式系统、计算机网络...延迟的计算包括电路交换总延迟、虚电路分组交换总延迟和数据报分组交换总延迟。

    计算机组成原理笔记

    机器零可以分为真零和虚零两种,真零是指实际的零值,而虚零是指计算机中表示零的方式。 六、汉明码和循环冗余码 汉明码和循环冗余码是计算机组成原理中的两个重要概念,汉明码是用于纠错的编码方式,而循环冗余码...

    C++快速复习笔记.rar

    3. 多态:通过虚函数和抽象类实现,允许子类重写父类的方法,提供不同的实现。 三、模板 C++中的模板允许我们编写泛型代码,可以用于处理不同数据类型。有函数模板和类模板两种,它们能提高代码的灵活性和可复用性...

    H3CNE学习笔记

    本篇《H3CNE学习笔记-增强版》详细记录了H3C设备操作的基础知识和配置方法。 一、概述部分,介绍了华三交换路由及操作系统,说明了命令行界面的基本操作,包括命令视图、配置命令、命令行级别、命令帮助特性(与...

    【SystemVerilog】路科验证V2学习笔记(全600页).pdf

    SystemVerilog的听课学习笔记,包括讲义截取、知识点记录... 11.2 虚方法 564 11.3 对象拷贝 575 11.4 回调函数 584 11.5 参数化的类 590 第十二章 UVM简介 392 8.2 UVM简介 414 8.3 UVM组件 420 8.4 UVM环境 425

    C#面向对象密封类与密封方法笔记教程

    1. **重写与密封**:密封方法必须是对基类中虚方法的重写,因此密封方法的声明中通常会包含`sealed`和`override`两个关键字。 2. **不可重写**:一旦一个方法被声明为密封方法,那么在派生类中就不能再对其进行重写...

    C++进阶笔记源码

    笔记可能会深入讲解如何设计和实现类、接口以及如何利用虚函数和纯虚函数实现多态性。 2. **STL(Standard Template Library)**:STL是C++标准库的一部分,提供了容器(如vector、list、map)、算法和迭代器等工具...

    C++读书笔记

    在深入理解C++的过程中,读书笔记是一种有效的学习方法,它能帮助我们整理思绪,巩固知识,并且在日后回顾时提供清晰的指引。以下是对C++编程语言的一些关键知识点的概述,这些内容可能涵盖在读书笔记中。 1. **...

    C# winfrom asp.net 学习笔记

    - **虚方法**:允许派生类覆盖基类的行为。 - **抽象方法**:必须在派生类中实现,不能有具体实现。 #### 7. **接口** 接口在C#中用于定义一组抽象方法或属性,它们必须由实现该接口的类来实现。默认情况下,...

    c++个人笔记总结.rar

    在C++中,虚函数和纯虚函数是实现多态的关键。 三、C++高级特性 1. 异常处理:通过try、catch和throw关键字,C++提供了一种处理运行时错误的方式,允许程序在出现异常时进行恢复或优雅地终止。 2. 模板:模板是C++...

    C#学习笔记(by sunyfun)

    多态性是OOP的另一个核心概念,笔记会介绍虚方法、重写和接口实现的多态行为。通过这些,读者能了解到如何在运行时动态地选择正确的方法执行。 最后,笔记可能会涵盖一些C#的高级特性,比如委托、事件和异步编程,...

    面向对象程序设计Java听课笔记

    浙江大学翁恺老师的Java视频课程深入浅出地讲解了这一主题,这些笔记旨在帮助我们回顾和巩固Java开发的关键知识。 1. 面向对象编程基础 - 类与对象:Java中的基本单元是类,它是具有属性(字段)和行为(方法)的...

    systemverilog牛人学习笔记

    1. **虚函数**:通过定义基类中的函数为虚函数,可以方便地在派生类中覆盖这些函数。 2. **句柄(Handle)**:类似于C语言中的指针,用于指向对象。 3. **类型转换**:支持从父类到子类的向下转换以及从子类到父类的...

    java编程思想读书笔记

    - Java中不使用`virtual`关键字,因为所有的方法默认都是虚函数,除非明确声明为`final`。 - C++中可以使用模板来实现泛型编程,而Java通过接口和类的继承来达到类似的效果。 - Java中没有`void`类型的返回值,...

Global site tag (gtag.js) - Google Analytics