`
xiaotao.2010
  • 浏览: 211878 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

C# 继承 (virtual、override、new、sealed)

阅读更多

 

1、C#中的继承写法

 

子类应用父类的方法 属性 使用关键字 “base” 。

 

 

/* C#中的继承父类的关键字是 “:”  */
class Son : Father {
}

 

 

2、virtual、override、new

 

 C#中不支持隐式重写子类中的方法

 

virtual     父类中需要注明允许重写的方;

override  子类中必须显示声明该方法是重写的父类中的方法;

new        子类中忽略父类的已存在的方法,“重写该方法;”

 

 

//父类方法
class Father {
       
        public string SayHello() {
            return "Hello ~!";
        }
     
        /* 父类中声明该方法是允许重写的方法(virtual) */
        public virtual string SayNo() {
            return "Hello No ~! ";
        }
    }

//子类方法
class Son : Father {
        //new是指“隐藏”,是指子类隐藏了父类的方法,当然,通过一定的转换,可以在子类的对象中访问父类的方法。
        //override是指“覆盖”,是指子类覆盖了父类的方法。子类的对象无法再访问父类中的该方法。
        public new string SayHello() {
            return "!!!!!!!!!!";
        }
   
        /* 子类中注明该方法是重写方法 (override);父类方法是abstract 修饰时,子类重写该方法也使用(override) */
        public override string SayNo() {
            return "no ~~~~ !!!!";
        }
    }

 

 

3、sealed 

 

C# 禁止子类方法重写父类方法的关键字,类似于java 中的 final;

 

分享到:
评论

相关推荐

    new、abstract、virtual、override,sealed关键字区别和使用代码示例

    new、abstract、virtual、override,sealed关键字区别和使用代码示例

    Visual C# 2010程序设计教程(教程PPT+源代码)

    8.2.3 方法的继承与virtual、override及new关键字 8.2.4 sealed关键字与密封类 8.2.5 Abstract关键字与抽象类 8.3 多态性 …… 第9章 泛型 第10章 Windows窗体应用程序开发 第11章 C#数据库编程与ADO.NET 第12章 ...

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

    c#学习问答 包括: 1.静态变量和非静态变量的区别? 2.const 和 static readonly 区别? 3.extern 是什么意思? 4.abstract 是什么意思? 5.internal 修饰符起什么作用? 6.sealed 修饰符是干什么的? 7.override 和 ...

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

    带有 sealed 修饰符的类不允许你从它继承任何类。所以如果你不想一个类被继承,你可以对该类使用 sealed 关键字。 复制内容到剪贴板 代码: sealed class CanNotbeTheParent { int a = 5; } unsafe 你可以使用 ...

    C#基础概念.doc

    C#基础概念: 1、静态变量和非静态变量的区别? 2、const 和 static readonly 区别? 3、extern 是什么意思? 4、abstract 是什么意思? 5、internal 修饰符起什么作用? 6、sealed 修饰符是干什么的? 7、override...

    C#方法的总结详解

    构造函数不能被继承,所以不能被virtual、new、override、sealed和abstract修饰,若没有显示定义任何构造函数,编译器将定义一个无参的public构造函数,但若是抽象类,编译器将定义一个无参的protected的构造函数...

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

    6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义? 11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? ...

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

    C#中的各种名词: ...new(新的)、static(静态的)、virtual(虚拟的)、override()、sealed(密封的)、abstranct(抽象的)、extern(外面的) 派生类调用基类的方法可以使用base关键字,如base.Method();

    C# for CSDN 乱七八糟的看不懂

    C#关键字 关键字 abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach ...

    C#基础概念二十五问

    6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义? 11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? ...

    c#学习笔记.txt

    override提供从基类继承的虚拟成员的新实现。 readonly声明一个字段,该字段只能赋值为该声明的一部分或者在同一类的构造函数中。 sealed指定类不能被继承。 static声明属于类型本身而不是属于特定对象的成员。 ...

    C#25个问题 静态成员和非静态成员的区别等等

    6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义? 11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? ...

    C#的25个问题(内附代码示例)

    6.sealed 修饰符是干什么的? 7.override 和 overload 的区别? 8.什么是索引指示器? 9.new 修饰符是起什么作用? 10.this 关键字的含义? 11.可以使用抽象函数重写基类中的虚函数吗? 12.密封类可以有虚函数吗? ...

    c# program

    34. 避免在继承中使用new而使用override替换。 35. 在不是sealed的类中总是将public 和 protected的方法标记成virtual的。 36. 除非使用interop(COM+ 或其他的dll)代码否则不要使用不安全的代码(unsafe code)。 ...

    C# 语言规格说明(English Edition第五版)

    1.6.6.4 Virtual, override, and abstract methods 18 1.6.6.5 Method overloading 20 1.6.7 Other function members 21 1.6.7.1 Constructors 22 1.6.7.2 Properties 23 1.6.7.3 Indexers 23 1.6.7.4 Events 24 1.6...

    c#索引器详解示例

    1、索引器的定义 C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组...修饰符包括 public,protected,private,internal,new,virtual,sealed,override, abstract,ex

    c# 加密和解密相关代码

    MD5 类表示MD5 哈希算法的所有实现均从中继承的抽象类,该类位于System.Security.Cryptography 命名 空间下,其ComputeHash 方法有3种重载形式,分别介绍如下。 计算指定字节数组的哈希值,语法格式如下: public ...

    net学习笔记及其他代码应用

    public virtual void PrintFields(){} } class B:A { int x=1; int y; public B() { y=-1; } public override void PrintFields() { Console.WriteLine(\"x={0},y={1}\",x,y); } 当使用new B()创建B的...

Global site tag (gtag.js) - Google Analytics