c# 定义类常用的模块

在使用C#类时,有一些注意事项需要考虑:

  1. 类的命名:根据C#的命名规范,类名应该使用帕斯卡命名法(Pascal Case),即每个单词的首字母大写,并且不包含下划线。

  2. 成员的访问修饰符:类中的成员(字段、属性、方法等)可以使用不同的访问修饰符来指定其可访问性。常见的访问修饰符包括 public、private、protected 和 internal。根据需求和设计,选择适当的修饰符来限制成员的访问。

  3. 构造函数:类可以定义一个或多个构造函数,用于创建对象并初始化其状态。构造函数的名称与类名相同,并且不能有返回类型。通过构造函数可以设置对象的初始值,执行必要的初始化操作。

  4. 继承与接口:C#支持类之间的继承关系。一个类可以继承自另一个类,并继承其成员和特性。使用继承可以实现代码重用和层次结构。此外,C#还支持接口,接口定义了一组成员,类可以实现一个或多个接口。接口提供了一种将行为与具体实现分离的方式。

  5. 静态成员:类可以定义静态成员,这些成员属于类本身而不是类的实例。静态成员在类加载时初始化,并且可以直接通过类名访问,无需创建类的实例。

  6. 隐藏与重写:C#中的类成员可以被隐藏或重写。隐藏使用 new 关键字,可以隐藏继承自基类的成员。重写使用 override 关键字,可以重写基类的虚拟方法。隐藏和重写可以通过多态性来实现不同的行为。

  7. 销毁对象:C#使用垃圾回收器(Garbage Collector)来管理内存。当对象不再被引用时,垃圾回收器会自动回收该对象所占用的内存。可以通过实现 IDisposable 接口,在对象不再使用时手动释放资源。

下面是一个示例代码,涵盖了上述每一个注意事项:

using System;

public class Animal // 类的命名使用帕斯卡命名法
{
    private string name; // 成员的访问修饰符为private

    public Animal(string name) // 构造函数用于初始化对象
    {
        this.name = name;
    }

    public string Name // 属性的访问修饰符为public
    {
        get { return name; }
        set { name = value; }
    }

    public virtual void MakeSound() // 使用virtual关键字定义虚拟方法,可重写
    {
        Console.WriteLine("The animal makes a sound.");
    }

    public static void StaticMethod() // 静态成员属于类本身
    {
        Console.WriteLine("This is a static method.");
    }
}

public class Dog : Animal // 继承自Animal类
{
    public Dog(string name) : base(name) // 使用base关键字调用基类的构造函数
    {
    }

    public override void MakeSound() // 使用override关键字重写虚拟方法
    {
        Console.WriteLine("The dog barks.");
    }
}

public interface IJumpable // 接口的定义
{
    void Jump();
}

public class Cat : Animal, IJumpable // 实现Animal类和IJumpable接口
{
    public Cat(string name) : base(name)
    {
    }

    public void Jump() // 实现接口中的方法
    {
        Console.WriteLine("The cat jumps.");
    }

    public new void MakeSound() // 使用new关键字隐藏基类的成员
    {
        Console.WriteLine("The cat meows.");
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        Animal animal = new Animal("Animal"); // 创建Animal对象
        Console.WriteLine(animal.Name); // 访问属性

        animal.MakeSound(); // 调用虚拟方法

        Animal.StaticMethod(); // 调用静态方法

        Dog dog = new Dog("Dog"); // 创建Dog对象
        dog.MakeSound(); // 调用重写的虚拟方法

        Cat cat = new Cat("Cat"); // 创建Cat对象
        cat.MakeSound(); // 调用隐藏的成员
        cat.Jump(); // 调用接口实现的方法
    }
}

在上述示例中,定义了一个基类 Animal,它具有私有字段、公共属性和虚拟方法。然后,通过继承创建了一个子类 Dog,重写了虚拟方法。另外,还定义了一个实现了接口 IJumpable 的子类 Cat,并使用 new 关键字隐藏了基类的成员。在 Main 方法中,创建了对象并演示了属性访问、方法调用和静态方法的使用。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值