`
luckyjaky
  • 浏览: 114406 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

类和继承

 
阅读更多
    public class MyBaseClass                                    //基类
    {
        public virtual void Print()
        {
            Console.WriteLine("This is a base class.");
        }
    }

 

   有三个类,形成了一个继承的层次:MyBaseClass、MyDerivedClass、SecondDerived,所有这三个类都包括名称  为Print的方法。在MyBaseClass中,Print被标记为virtual,在MyDerivedClass被标记为override。

 

    public class MyDerivedClass:MyBaseClass      //派生类
    {
        public override void Print()
        {
            Console.WriteLine("This is a derived class");
        }
    }

 

      如果把SecondDerived的Print方法声明为override,那么它会覆写方法的全部两个低继承级别的版本,即通过基类调用时,基类会调用派生类的override方法,一直向上继承直到不是override方法为止。

 

 public class SecondDerived:MyDerivedClass           //最派生类
    {
        public override void Print()
        {
            Console.WriteLine("This is a second derived class.");
        }
    }

  

        public static void Main()                                   //主类
        {
            SecondDerived derived = new SecondDerived();
            MyBaseClass mybc = (MyBaseClass)derived;

            derived.Print();
            mybc.Print();
        }

    输出结果:This is a second derived class.

                   This is a second derived class.(MyBaseClass类调用MyDerivedClass,MyDerivedClass调用SecondDerived类中的方法,因为BaseClass的Print方法是virtual,MyDerivedClass、SecondDerived的Print方法是override,一直递归向派生类调用,直到派生类中的方法不是override为止。)

 

如果把SecondDerived的Print方法声明为new. 

 public class SecondDerived:MyDerivedClass           //最派生类
    {
        public new void Print()
        {
            Console.WriteLine("This is a second derived class.");
        }
    }

  

        public static void Main()                                   //主类
        {
            SecondDerived derived = new SecondDerived();
            MyBaseClass mybc = (MyBaseClass)derived;

            derived.Print();
            mybc.Print();
        }

    输出结果:This is a second derived class.

                   This is a derived class.(基类BaseClass调用派生类MyDerivedClass的Print方法,因为BaseClass的Print方法是virtual,MyDerivedClass的Print方法是override,而没有调用SecondDerived类中的方法,因为SecondDerived类中的方法是new.)

分享到:
评论

相关推荐

    Java 类和继承相关代码集

    它是通过继承和接口实现的。 - 方法的覆盖和重载是多态的表现形式。 - 在Java中,父类引用指向子类对象的能力称为运行时多态。 7. **访问控制和封装**: - 封装是面向对象编程的重要原则,它将类的实现细节隐藏...

    c++ 习题 派生类和继承

    C++中的继承是面向对象编程的核心特性之一,它允许创建一个新的类(派生类),该类继承自已存在的类(基类),并可以扩展或修改基类的功能。本题涉及了派生类和继承的多种概念,包括派生方式、成员访问、构造函数和...

    javascript中类和继承(代码示例+prototype.js)

    在JavaScript中,类和继承是面向对象编程的重要概念。JavaScript是一种动态类型的语言,它没有像Java或C++那样的传统类,而是使用函数作为构造器来模拟类的行为,并通过原型链实现继承。本文将深入探讨JavaScript中...

    c++抽象类继承

    `Student` 类继承自 `UniversityObject`,并实现了 `getSummary()` 函数。该函数返回学生的注册号和姓名组成的字符串。构造函数接受两个字符串参数,分别用于初始化 `name` 和 `register_str` 成员变量。通过这种...

    实验五:派生类和继承(二).doc

    实验五:派生类和继承(二).doc

    Java编程实例集:类和继承(中文注释).rar

    收集的一些Java编程实例集:类和继承,含有丰富的中文注释,内容大致是:定义 Point类、定义形状接口、循环输出下转形状并打英创建自己异常、使用继承 (实例一个父类定义到子类)子类赋值把一个点定义创建圆对象定义...

    Python类和继承的完全代码实现、详细讲解

    Python类和继承的完全代码实现、详细讲解

    关于类与继承和相关基础东西总结

    继承是OOP中的一个重要特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这种机制使得代码重用变得更加简单,同时也支持多态性——即不同类型的对象能够对同一消息作出不同的响应。在...

    c#使用 和 继承 泛型类

    本篇文章将深入探讨如何在C#中使用和继承泛型类。 首先,让我们理解什么是泛型类。泛型类是一种模板或蓝图,它定义了参数化类型,这些类型在类实例化时可以被具体的类型替换。在C#中,我们使用尖括号`<>`来声明泛型...

    Qt5类继承关系图

    在Qt5框架中,类的继承关系是构成整个框架的基础,而理解这些类之间的继承关系对于掌握和利用Qt5进行高效编程至关重要。 从提供的【部分内容】来看,包含了一系列的Qt5类和模块,涵盖图形用户界面(GUI)、网络通信、...

    示例-用类的继承计算球圆柱圆锥的表面积体积

    在这个示例中,我们探讨的是如何使用C++的类继承机制来计算球体、圆柱体和圆锥体的表面积和体积。C++是一个强大的编程语言,特别适合进行面向对象的编程,而VC++6.0是微软的老版开发环境,尽管已过时,但仍然是学习...

    Lua 类的继承与函数override

    这里 `Student` 类继承了 `Person` 类,添加了一个新的属性 `grade` 并重写了 `sayHello` 方法。当我们创建一个 `Student` 对象时,它不仅具有 `Person` 的所有属性和方法,还增加了自己的特性。 最后,我们谈谈...

    python类和继承用法实例

    这里,`cBB` 类继承自 `cCC` 和 `cAA` 类。可以看到,`cBB` 类可以直接访问 `cCC` 类中的 `Method2` 方法,也可以访问 `cAA` 类中的属性 `m_a`。 #### Python 中的继承 继承是指一个类(子类)继承另一个类(父类...

    类的继承练习

    最后一个示例展示了更复杂的继承结构,包括多级继承和抽象类的概念。定义了一个抽象基类`vehicle`,包含了`wheels`和`weight`两个属性。`car`和`truck`类分别继承自`vehicle`类,并添加了各自特定的属性,如`car`的`...

    c++派生类及继承实验报告.doc

    本实验的目的是为了掌握C++语言中派生类和继承的使用,包括派生类的声明方法、派生类构造函数的定义方法、基类成员在派生类中的访问属性、继承方式下构造函数和析构函数的执行顺序及构造规则、虚基类在解决二义性...

    kotlin基础教程之类和继承

    "kotlin基础教程之类和继承" 类和继承是面向对象编程的两个基本概念。在 Kotlin 编程语言中,类和继承的实现方式与 Java 相似,但也存在一些不同之处。 类声明 在 Kotlin 中,类声明使用 `class` 关键字,后跟...

    c++派生类与继承实验报告.pdf

    在C++编程语言中,派生类和继承是面向对象编程的重要概念,它们允许我们创建新的类,这些类可以从已有的类(称为基类或父类)中派生,并继承其属性和行为。这个实验报告涉及到对这些概念的实践理解和应用。 首先,...

    Qt5类继承关系图_qt5类继承关系图_QT5_

    总的来说,"Qt5类继承关系图"是学习和开发Qt5应用的重要资源,它帮助开发者理解Qt5类库的组织结构,提高代码的编写效率,同时也有助于调试和优化项目。通过深入研究这个图,开发者可以更加熟练地运用Qt5的类和方法,...

    QT类继承图

    在该图表中,开发者可以找到如QPushButton、QLabel、QLineEdit等具体控件的层级关系,以及如何通过继承和组合这些控件来构建复杂的用户界面。 通过分析这两个文件,我们可以了解到Qt的类体系是如何组织的,哪些类是...

Global site tag (gtag.js) - Google Analytics