• 定义类成员


    访问级别:
    public
    private
    internal  成员只能由定义它的项目(程序集)内部的代码访问
    protected  成员只能由类或派生类中的代码访问
    protected internal  只能由项目(程序集)中派生类的代码来访问

    定义字段:
    readonly: 表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值
    static:静态字段

    定义方法:
    static
    virtual  方法可重写
    abstract 方法必须在非抽象的派生类中重写(只用于抽象类中)
    override  方法重写了一个基类方法(如果方法被重写,就必须用该关键字)
    extern  方法定义放在其他地方
    override sealed 方法不能由派生类重写

    定义属性:
    private int myInt;
    public int MyIntProp
    {
      get{return myInt;}
      set{myInt=value;}
    }
    属性可以使用virtual,override,abstract 关键字,但这几个关键字不能用在字段中。

    自动属性
    public int MyIntProp
    {
      get;
      set;
    }
    C#编译器会添加未输入的内容,编译哭会声明一个用于存储属性的私有字段,并在属性的get和set块中使用该

    字段。
    我们以通常的方式定义属性的可访问性,类型和名称,但没有给get和set块提供执行代码。这些块执行代码(

    和底层的字段)都由编译器提供。
    使用自动属性时,只能通过 属性访问数据。
    自动属性唯一限制是它们必须包含get和set访问器,不能用这种方式定义只读或只写的属性


    隐藏基类方法:new
    重写基本类方法:override
    例如:

    重写

    代码
    1 public class MyBaseClass
    2 {
    3 public virtual void DoSonething();
    4 {
    5 Console.WriteLine("Base imp");
    6 }
    7 }
    8
    9  public class MyDerivedClass:MyBaseClass
    10 {
    11 public override void DoSomething()
    12 {
    13 Console.WriteLine("Derived imp");
    14 }
    15 }
    16
    17 MyDerivedClass myObj = new MyDerivedClass();
    18 MyBaseClass myBaseObj;
    19 myBaseObj = myObj;
    20 myBaseObj.DoSomething();
    21 结果: Derived imp
    22
    23  


    隐藏

    代码
    1 public class MyBaseClass
    2 {
    3 public virtual void DoSonething();
    4 {
    5 Console.WriteLine("Base imp");
    6 }
    7 }
    8
    9  public class MyDerivedClass:MyBaseClass
    10 {
    11 new public void DoSomething()
    12 {
    13 Console.WriteLine("Derived imp");
    14 }
    15 }
    16
    17 MyDerivedClass myObj = new MyDerivedClass();
    18 MyBaseClass myBaseObj;
    19 myBaseObj = myObj;
    20 myBaseObj.DoSomething();
    21 结果: Base imp
    22
    23  


    无论是重写还是隐藏成员,都可以在派生类的内部访问基类成员。使用base关键字
    public class MyBaseClass
    {
       public virtual void DoSonething();
        {
             Console.WriteLine("Base imp");
        }
    }

    public class MyDerivedClass:MyBaseClass
    {
         base.DoSomthing();  //这里调用的是基类的方法
    }

    接口:
    注意:
    1.不允许使用访问修饰符(public ,private ,protected,internal),所有的接口成员都是公共的。
    2.接口成员不能包含代码体
    3.接口不能定义字段成员
    4.接口成员不能用关键字static ,virtual,abstract,sealed来定义
    5.类型定义成员是禁止的
    6.如果隐藏了基接口成员,可以用关键字new来定义它们

    在类中实现接口:
    实现接口的类必须包含该接口所有成员的执行代码,且必须匹配指定的签名(包括匹配指定的get和set块),

    并且必须是公共的

    代码
    1 public interface IMyInterface
    2 {
    3 void DoSomething();
    4 void DoSomethingElse();
    5 }
    6  public class MyClass:IMyInterface
    7 {
    8 public void DoSomething()
    9 {
    10 }
    11 public void DoSomethingElse()
    12 {
    13 }
    14 }

    可以使用关键字virtual或abstract 来执行接口成员,便不能使用static 或const。
    继承一个实现给定接口的基类,就意味着派生类隐式地支持这个接口。

    部分类partial

    使用部分类定义,使类的定义放到多个文件中,例如,可以把字段,属性和构造函数入在一个文件中,而把方

    法放在另一个文件中,为此,只需在每个包含部分类定义的文件中对类使用partial关键字就可
    public partial class MyClass
    {
    }

    作者:wpf之家
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    电路维修 (广搜变形-双端队列bfs)
    靶形数独 (dfs+预处理+状态压缩)
    埃及分数问题(带乐观估计函数的迭代加深搜索算法-IDA*)
    weight (搜索对象的选取)
    Codeforces Round #506 (Div. 3)
    生日蛋糕 (poj1190) (dfs剪枝)
    校内模拟赛题面
    NOIP2013 D1T3 货车运输 zz耻辱记
    NOIP2011 D2T3 观光公交 做题笔记
    ARC 103
  • 原文地址:https://www.cnblogs.com/wpf123/p/2347368.html
Copyright © 2020-2023  润新知