`
varsoft
  • 浏览: 2435566 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

C#继承类重写与隐藏基类方法的区别

阅读更多
using System;
using System.Collections;

public class Nevermore60Customer:Customer
{
public override string GetFunnyString()
{
return "Nevermore60.Nevenmore!";
}



--------------------------------------------------------------------------------

public class Customer
{
public virtual string GetFunnyString()
{
return "Plain ordinary customer.Kaark!";
}
public class SamplesArray
{
public static void Main()
{
Customer Cust1=new Nevermore60Customer();
Nevermore60Customer Cust2;
// Cust1=new Customer();
Console.WriteLine("Customer referencing Customer."+Cust1.GetFunnyString());
Cust1=new Nevermore60Customer();
Console.WriteLine("Customer referencing Nevenmore60Customer:"+Cust1.GetFunnyString());
Cust2=new Nevermore60Customer();
Console.WriteLine("Nevenmore60Customer referencing"+Cust2.GetFunnyString());


}
}

Customer Cust1=new Nevermore60Customer();
如果是重写:则,如果声明的基类对象,指向的是派生类,那么这时调用的是派生类中对基本重写的方法的方法(如上所示)
如果是隐藏基类方法: public New string GetFunnyString()
{
return "Nevermore60.Nevenmore!";
}
则:Customer Cust1=new Nevermore60Customer();此时Cust1调用的仍是声明时候的基类中的GetFunnyString方法.
但二者声明与赋值都是同一个类时,不会发生这种问题.
分享到:
评论

相关推荐

    C#定义基类并重写基类方法计算图形面积和周长的windows界面程序

    2.定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚方法Zhouchang()。 3.定义Shape类的派生类圆形Circle,重写Shape类继承的虚方法:...

    C#子类对基类方法的继承、重写与隐藏详解

    主要介绍了C#子类对基类方法的继承、重写与隐藏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    C#定义基类并重写基类计算面积和周长的windows界面程序

    定义Shape类的派生类三角形Tangle,使用base关键字调用基类构造函数,重写Shape类继承的虚方法:求面积虚方法Mianji(),求周长虚方法Zhouchang()。 3.定义Shape类的派生类圆形Circle,重写Shape类继承的虚方法:求...

    C#重写重载与多态

    重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在...多态:c#的多态性主要体现在类的继承上:子类继承父类的时候,可能出现同名但方法定义不同的情况, 所以在子类中会将原方法覆盖,实现自身的要求

    c#方法重写和隐藏的学习示例

    2:方法隐藏:无论基类中的方法是否用了virtual关键字,继承类中都可以用new关键字(如果不用new的话,不会产生错误,但会生成一个编译警告)将基类中的方法隐藏,所谓隐藏就是隐藏,不像重写,重写就是原来的(基类...

    用抽象继承类写的三角形矩形正方形面积计算

    作者自己写着玩的一个简单abstract类,利用继承和抽象重写来计算矩形,正方形,三角形的面积。无聊之作,主要用来巩固abstract和抽象重写的概念

    c#基础学习问答c#基础学习问答

    11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? 13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract ...

    C#4-6

    代码,实例说明.1、类的继承、多级继承 2、调用基类的构造函数 3、方法重写 4、专门等待重写的类——抽象类与抽象方法 5、等待重写的变态类——接口 6、显式接口实现 7、继承多个接口与接口的继承...

    C#中Override关键字和New关键字的用法详解

    它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个隐藏具有类似名称的继承方法的新方法。 在 C# 中,派生类可以包含与基类方法同名的方法。 基类方法必须定义为 virtual。 如果派生类中的方法前面没有...

    c#学习笔记——学习心得

    密封方法只能用于对基类的虚方法进行实现,声明密封方法时同时使用sealed和override且必须通过重写基类中的虚方法来实现 名称空间:类似java中的包 集合: 代表: 访问修饰符:private、public、protected、...

    C#基础概念.doc

    11、可以使用抽象函数重写基类中的虚函数吗? 12、密封类可以有虚函数吗? 13、如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14、...

    你必须知道的C#的25个基础概念(附源码)

    可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? 13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以...

    C#本质论(第3版)

    4.1.7 语句与方法调用的比较 4.2 方法的声明 4.2.1 参数声明 4.2.2 方法返回值声明 4.3 uslng指令 4.4 main()的返回值和参数 4.5 参数 4.5.1 值参数 4.5.2 引用参数 4.5.3 输出参数 4.5.4 参数数组 ...

    c#学习笔记.txt

    virtual在派生类中声明其实现可由重写成员更改的方法或访问器。 volatile指示字段可由操作系统、硬件或并发执行的线程等在程序中进行修改。 9,语句 语句是程序指令。除非特别说明,语句都按顺序执行。C# 具有下列...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    4.1.7 语句与方法调用的比较 108 4.2 方法的声明 108 4.2.1 形式参数声明 109 4.2.2 方法返回类型声明 110 4.3 using指令 111 4.4 Main()的返回值和参数 114 4.5 方法的参数 116 4.5.1 ...

    在一小时内学会 C#(txt版本)

    C# 中所有内容都打包在类中,而所有的类又打包在命名空间中(正如文件存与文件夹中)。和 C++ 一样,有一个主函数作为你程序的入口点。C++ 的主函数名为 main,而 C# 中是大写 M 打头的 Main。 类块或结构定义之后...

    C#最新面试题(127道)word格式

    共享给正在找C#相关面试题的人,一共127道。都背下来一定对你面试有帮助。。。 例如。。。 1. 简述 private、 protected、 public...Override 是进行基类中函数的重写。为了适应需要。 下面还有。。。下下来看吧 ~~~

    微软C#语言规范,C#语言教程中文版

    1.6.6.4 虚方法、重写方法和抽象方法 18 1.6.6.5 方法重载 20 1.6.7 其他函数成员 21 1.6.7.1 构造函数 22 1.6.7.2 属性 23 1.6.7.3 索引器 23 1.6.7.4 事件 23 1.6.7.5 运算符 24 1.6.7.6 析构函数 25 1.7 结构 25 ...

    轻松学习C#的密封类

     并不是所有的类都可以被继承,C#语言中就是密封类。在C#语言中我们可以把类声明为sealed。这表示不能继承该类,如果想要继承那么编译器肯定会报错。在把类或方法标记为sealed时,最可能出现的情形时:如果要对库,...

Global site tag (gtag.js) - Google Analytics