C#类和接口的定义

来源:互联网 发布:八爪鱼 三脚架 知乎 编辑:程序博客网 时间:2024/05/17 08:15

定义类

C#中的类定义

C#使用class关键字来定义类:
class MyClass
{
   // Class members.
}

默认情况下,类声明为内部的,即只有当前工程中的代码才能访问
也可以用internal关键字显式声明:
internal class MyClass
{
   // Class members.
}

可以指定类是公共的,即可以由其他工程中的代码来访问
要用public关键字声明:
public class MyClass
{
   // Class members.
}

还可以指定类是
抽象类:不能实例化,只能继承,可以有抽象成员,使用关键字abstract
密封类:不能继承,使用关键字sealed

声明抽象类:
public abstract class MyClass
{
   // Class members, may be abstract.
}
抽象类可以是public的,也可以是internal的

声明密封类:
public sealed class MyClass
{
   // Class members.
}
抽象类可以是public的,也可以是internal的

可以在类定义中指定继承,方式是类名后加冒号再加基类名:
public class MyClass : MyBase
{
   // Class members.
}
注意:在C#中只能有一个基类,如果继承了个抽象类,就必须执行所继承的所有抽象成员(除非派生类也是抽象的)

编译器不允许派生类的可访问性比其基类更高
即内部类可以继承于一个公共类,但公共类不能继承于一个内部类
如果没有指定基类,那么被定义的类继承自System.Object

还可以在冒号后面指定支持的接口
如果指定了基类,冒号后面跟着基类名,再接着一个或多个指定的接口,之间用逗号分割
例如:
给MyClass指定一个接口:
public class MyClass : IMyInterface
{
   // Class members.
}

给MyClass指定基类和接口:
public class MyClass : MyBase, IMyInterface
{
   // Class members.
}

指定多个接口:
public class MyClass : MyBase, IMyInterface, IMySecondInterface
{
   // Class members.
}

访问修饰符组合:
修饰符    含义
none or internal  类只能在当前工程中访问
public    类可以在任何地方访问
abstract or internal abstract 类只能在当前工程中访问,不能实例化,只能继承
public abstract   类可以在任何地方访问,不能实例化,只能继承
sealed or internal sealed 类只能在当前工程中访问,不能派生,只能实例化
public sealed   类可以在任何地方访问,不能派生,只能实例化


接口的定义

与类的声明方式类似,使用interface关键字:
interface IMyInterface
{
   // Interface members.
}

修饰符关键字public和internal的使用方式相同:
public interface IMyInterface
{
   // Interface members.
}

关键字abstract和sealed不能在接口中使用
因为接口不包含执行代码,不能直接实例化,而且必须可以继承

接口继承跟类相似,不过可以使用多个基接口:
public interface IMyInterface : IMyBaseInterface, IMyBaseInterface2
{
   // Interface members.
}

接口不是类,不从System.Object继承
由于多态性使System.Object的成员可以使用这些接口

System.Object

公共构造函数
Object  初始化 Object 类的新实例。

公共方法
Equals  已重载。 确定两个 Object 实例是否相等。 
GetHashCode 用作特定类型的哈希函数。
GetType  获取当前实例的 Type。 
ReferenceEquals 确定指定的 Object 实例是否是相同的实例。 
ToString 返回表示当前 Object 的 String。 

受保护的方法
Finalize 析构函数
MemberwiseClone 创建当前 Object 的浅表副本。

原创粉丝点击