20120827

关于类的声明

class MyClass{}
Internal class MyClass {}

 

   Internal为类声明的默认修饰符,声明为内部类表示只有当前项目中的代码才能访问它。可以用Internal进行显示声明,但是没有必要。

相对于Internal,Public修饰符表示可以有其他项目的代码来访问。(“二级”修饰符abstract和sealed为抽象类和最终类修饰。)

 类的继承

C#中只能有一个基类,不允许派生类的可访问性比基类高。

继承:

class DrivedClass : BaseClass 
{
    ... ... 
}

接口:

class Class : Interface
{
    ... ...
}

派生且接口:

class DrivedClass : BassClass, Interface 
{
    ... ...
}

C# 中只能继承一个基类,但是可以连接多个接口:

class DrivedClass : BassClass, Interface1, Interface2 ,…,Interfacen
{
    ... ...
}

注意:所有接口成员必须在实现类中实现,如果不想进行实现可以提供一个空的函数执行体。

接口:

声明与类类似,关键词为Interface,接口中不包含实现代码,而且能够被继承,在接口中abstract与sealed无意义,不能使用。

接口与抽象类的区别:

相同点:1)都包含由派生类继承的成员;

2)不能直接实例化、可以声明其变量。通过变量控制访问的成员变量。

不同点:1)抽象类:可以拥有抽象成员(没代码体,且必须在派生类中实现否则派生类也是抽象的)和非抽象成员

接口:只能声明并由使用接口的类实现

2)抽象类: 成员可以公有和私有或其他性质。

接口: 接口成员都是共有,禁止定义类型成员,但是隐藏基接口可以用new隐藏函数。

3)接口不能包含字段、构造函数、析构函数、静态成员或常量。

接口的实现:

对于定义属性:声明set、get访问器,类似于类中的自动属性,但又不同。

可以使用virtual和abstract来执行接口成员,但是不能使用static和const。

接口成员的现实执行和隐式执行:

public void interface.fun();  //显示执行
public void fun();   //隐私执行。

其执行为:

Class ob = new class();
Ob.fun(); //隐私执行。
Interface obIn = ob;
obIn.fun(); //显示执行,此时Ob.fun();失败;

用非公共的可访问性添加属性访问器

public interface IMyInterface
{
    int MyIntProperty
    {
         get;
    }
}

public class MyBaseClass : IMyInterface
{
    protected int myInt;
    
    public int MyIntProperty
    {
         get
         {
            return myInt;
         }
         protected set
         {
            return myInt;
         }
    }
}

部分类定义(实现功能分块或者声明实现):

1、#region 函数说明

     #endregion

2、partial class PartClassTest{} 利用partial关键词将不同的功能块在不同的文件中进行定义。

3、为了实现方法与实现的分离,可以利用partial进行函数分块。但是需要注意的是分部方法不能具有访问修饰符或 virtual、abstract、override、new、sealed 或 extern 修饰符

类成员:

成员:访问级别:添加internal 只能有项目内部的代码访问。

字段:(C++中成员变量)可以使用关键词readonly,表示只能在构造函数过程中赋值。相对于const较为灵活(const成员也是静态的)。

方法

定义的关键词:virtual、abstract、override、extern

自动属性:public int MyData

             {

                  get;

                  set;

              }

MyData进行数据交换的细节操作为系统自行完成,底层的私有字段也由编译器完成,不能访问,同事set\get 必须全部保留。

 

基类成员的隐藏和重写

class baseclass
{ 
    public void fun(){ }; 
}

class driedclass : baseclass
{ 
    //隐式隐藏,屏蔽基基类成员,编译器编译时候会发出警告;
    public void fun()
   {
        ... ...
    }; 

    //隐式隐藏;
    new public void fun()
    {
        ... ...
    }; 

    //重写,实现多态性;
    public override void fun(){
    {
        ... ...
    }; 
}

转载于:https://www.cnblogs.com/Caius/archive/2012/08/31/2664847.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值