类使用 class 关键字声明

class

类使用 class 关键字声明。采用的形式为::

[attributes] [modifiers] class identifier [:base-list] { class-body }[;]

其中:

attributes(可选)
附加的声明性信息。有关属性和属性类的更多信息,请参见 17. 属性
modifiers(可选)
允许的修饰符为 newabstractsealed 和四个 访问修饰符
identifier
类名。
base-list(可选)
包含一个基类和任何实现的接口的列表,各项之间由逗号分隔。
class-body
类成员的声明。
备注

与 C++ 不同,C# 中仅允许单个继承。也就是说,类只能从一个基类继承实现。但是,一个类可以实现一个以上的接口。下表给出了类继承和接口实现的一些示例:

继承示例
class ClassA { }
单个class DerivedClass: BaseClass { }
无,继承两个接口class ImplClass: IFace1, IFace2 { }
单个,继承一个接口class ImplDerivedClass: BaseClass, IFace1 { }

只有嵌套类允许访问级别 protectedprivate

一个类可包含下列成员的声明:

在 C++ 的托管扩展中,与 C# 类和 C# 结构等效的类和结构如下所示:

C#C++ 托管扩展有关更多信息
__gc 结构

__gc 类
__gc 关键字
结构__value 结构

__value 类
__value 关键字
示例

下面举例说明如何声明类的字段、构造函数和方法。该例还说明了如何实例化对象及如何打印实例数据。在此例中声明了两个类,一个是 Kid 类,它包含两个私有字段(nameage)和两个公共方法。另一个是用于数据处理的 MainClass 类。

// keyword_class.cs
// class example
using System;
public class Kid 
{
   private int age;
   private string name;

   // Default constructor:
   public Kid() 
   {
      name = "N/A";
   }

   // Constructor:
   public Kid(string name, int age) 
   {
      this.name = name;
      this.age = age;
   }

   // Printing method:
   public void PrintKid() 
   {
      Console.WriteLine("{0}, {1} years old.", name, age);
   }
}

public class MainClass 
{
   public static void Main() 
   {
      // Create objects
      // Objects must be created using the new operator:
      Kid kid1 = new Kid("Craig", 11);
      Kid kid2 = new Kid("Sally", 10);

      // Create an object using the default constructor:
      Kid kid3 = new Kid(); 

      // Display results:
      Console.Write("Kid #1: ");
      kid1.PrintKid();
      Console.Write("Kid #2: ");
      kid2.PrintKid();
      Console.Write("Kid #3: ");
      kid3.PrintKid();
   }
}
输出
Kid #1: Craig, 11 years old.
Kid #2: Sally, 10 years old.
Kid #3: N/A, 0 years old.

注意:在上例中,私有字段(nameage)只能通过 Kid 类的公共方法访问。例如,不能通过 Main 方法用如下语句打印小孩的姓名:

Console.Write(kid1.name);   // Error

但是,如果 Main 方法是 Kid 类的一个成员,则此操作是可行的。

还请注意:private 修饰符是类成员的默认修饰符。如果移除了该修饰符,仍然会得到私有成员。有关访问级别修饰符的更多信息,请参见访问修饰符

还请注意:对于使用默认构造函数 (kid3) 创建的对象,年龄字段被初始化为零。

有关类的更多信息,请参见 10. 类

请参见

属性是类、结构和接口的命名成员。它们提供了通过访问器读、写或计算私有字段值的灵活机制。

属性是字段的扩展并通过相同的语法来访问。与字段不同,属性不指定存储位置。相反,属性通过访问器来读写或计算它们的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值