C#中的类定义


默认情况下,类声明为内部的,即只有当前项目中的代码才能访问它。也可以使用internal访问修饰符关键字显示指定它。也可指定类是公共的,应该可以由其他项目中的代码来访问。使用public关键字。还可以指定类是抽象的(abstract不能实例化,只能继承,可以有抽象成员)或密封的(sealed,不能继承)。两个关键字互斥。

还可以在类定义中指定继承。在类后家一个冒号,其后是基类名。

public class MyClass :Mybase

{

// Class member.

}

注意:在C#的类定义中,只能有一个基类,如果继承了一个抽象类,就必须实现所继承的所有抽象成员(除非派生类也是抽象的)。

内部类可以继承于一个公共基类,但公共基类不能继承于一个内部类。如:

正确

public class MyBase

{

//Class members.

}

internal class MyClass:MyBase

{

//Class members.

}

错误

internal class MyBase

{

//Class members.

}

public class MyClass:MyBase

{

//Class members

}

除了以这种方式指定基类外,还可以在冒号之后指定支持的接口。如果指定了基类,它必须紧跟在冒号后面,之后才是指定的接口,并用逗号隔开。可以指定多个接口

Virtual:用于方法声明时,不能用于class声明时,这与abstract不同。

Virtual和abstract都能用于方法的声明,但是是virtual和abstract不 能 同 时使用修饰方法

Abstract方法只能包含在abstractclass中,而且abstract方法不能有方法体,必须一定在继承类中实现。

Abstract,extern,partial表示的方法可以不包含methodbody,其他的方法必须包含方法体,partial声明的方法必须返回void,且必须在partial的class或者struct中。

Virtual方法可以包含在abstractclass和普通class中,必须拥有方法体,如果有返回值时,方法必须有返回值,它是一个虚方法,直到声明一个类的实例之前,它都不存在于真实的内存空间中。

partial:再3.0之前修饰class,再3.0开始可以修饰class和method,partialmethod只能包含在partialclass或者partialstruct中。partialclass可以有两个或以上。

partialmethod包含两部分,一部分为定义(defining),一部分是实现,定义中不能包含方法体,实现部分必须包含方法体。

partialmethod必须为void返回值,并且不能有out输出参数。

partialmethod只能用unsafeandstatic两个修饰符修饰。

Interface和abstractclass

抽象类是一个不完全的类,是对对象的抽象,而接口是一种行为规范。

Abstractclass不能创建实例,继承abstractclass时,其中的虚方法必须被重写(如果继承abstractclass子类依然是abstractclass,那么可以不实现abstractmethod),而vitual方法可以不被重写,而且虚方法的方法体可以被执行。如果virtualmethod被重写了那么在执行时将调用重载后的方法,这是继承和多态。

Interface

声明时可以使用访问限制符(public,private…),但是其中包含的方法不能使用访问限制符,方法不能包含方法体,这与抽象方法(abstractmethod)相同。

Interface中可以包含Property如(intAge{get;set;}),但是不能包含field(字段),并且方法和属性都不能用访问限制符号来修饰,他们继承interface的访问限制,方法和属性不能同时用abstract等符号修饰。

Interface不能有构造函数,但是abstractclass有构造函数。

Interface被继承时其中的方法都必须被实现,这与abstractclass相同。

Interface可以被interface继承,就是接口能继承与接口,如:

publicinterfaceMyInterface2:MyInterface{}

Interface中的属性和方法必须在类中实现,即implement,implement是不能使用override关键字,override关键字用于virtual和abstractmethod的重写,而interface中的方法和属性直接定义相同的即可implement。

优质内容筛选与推荐>>
1、SpringMVC RESTful中文乱码
2、Jessicawanttg,first day
3、【xml】利用OpenCV解析
4、Java中的選擇排序、冒泡排序及折半查找
5、python3下应用pymysql(第一卷)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号