定义类成员

蹲街弑〆低调 提交于 2020-02-04 13:51:39

访问级别:
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:MyBaseClass10 {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 imp22 23  

 

 


隐藏

 

代码
 1 public class MyBaseClass 2 { 3    public virtual void DoSonething(); 4     { 5          Console.WriteLine("Base imp"); 6     } 7 } 8  9  public class MyDerivedClass:MyBaseClass10 {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 imp22 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
{
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!