C#入门经典第九章定义类-1
1.C#中使用class关键字来定义类
class MyClass
{
//代码部分
}
定义了类之后,就可以在项目中能访问该定义的其他位置对该类进行实例化。默认情况下,类的声明是内部的,即只有当前项目中的代码可以访问它。可以使用internal访问修饰符关键字来显式指定,如下所示(但这是不必要的);
internal class MyClass
{
//代码部分
}
public class MyClass//指定类是公共的,可以由其他项目中的代码访问。使用关键字:public
{
//代码部分
}
除了以上两个访问修饰符关键字外,还可以指定类是抽象的(不能实例化,只能继承,可以有抽象成员)或密闭的(sealed,不能继承)。为此,可以使用两个互斥的关键字abstract或sealed。所以,抽象类必须使用下述方式声明:
public abstract class MyClass //公共抽象类
{
//代码部分
}
public sealed class MyClass
{
}
也可以在类中指定继承。方法:是在类名后加上一个冒号,其后是基类名
如: public class MyClass:MyBase
{
}
注意:在C#的类定义中,只能有一个基类,如果继承了一个抽象类,就必须实现所继承的所有抽象成员(除非派生类也是抽象的)。
编译器不允许派生出来的访问性高于基类,也就是说,内部类可以继承一个公共基类,但是公共类不能继承一个内部类。所以下面代码是合法的。
public class Mybase
{
}
internal class MyClass:MyBase
{
}
但是下述代码不可编译:
internal class Mybase
{
}
public class MyClass:MyBase
{
}
除了以这种方式指定积累外,还可以在冒号之后指定支持的接口。如果指定了基类,它必须紧跟在冒号后面,之后才是指定的接口。若没有指定基类,则接口就跟在冒号的后面。必须使用逗号分隔基类名(如果有基类)和接口名。
添加接口,如下所示:
public class MyClass :IMyInterface
{
}
所有的接口成员都必须在支持该接口的类中实现,但如不想使用给定的接口成员,就可以提供一个“空”的实现方式(没有函数代码)。还可以把接口成员实现为抽象类中的抽象成员。
public class MyClass:MyBase,IMyInterface
{
}
也可以多个接口,中间有逗号分隔。
接口的定义:
使用interface关键字。如下:
interface IMyInterface
{
}
9.3构造函数和析构函数
class MyClass() { public MyClass() { //代码 } public MyClass (int myint) { //代码 } }
OOP工具