C# 抽象类、虚拟类和私有类(大白话)

  • 抽象类(Abstract Class) 抽象类是不能被实例化的类,它只能被继承。抽象类被设计为用作其他类的基类,并且必须由子类提供实现。换句话说,抽象类只定义接口和行为规范,具体实现必须由子类完成(就是说:基类先定义方法没有功能,只能子类重写)。
  • 以下是一个简单的抽象类的例子:
  • public abstract class Animal {
        public virtual void Eat() {
            Console.WriteLine("Animal eating...");
        }
    
        public abstract void MakeSound();
    }
    
    public class Dog : Animal {
        public override void MakeSound() {
            Console.WriteLine("汪汪");
        }
    }
    
    static void Main(string[] args) {
        Animal animal = new Dog(); // 把子类对象赋值给父类变量
        animal.Eat(); // 调用虚拟方法
        animal.MakeSound(); // 调用抽象方法
    }
    

    *抽象类 Animal 定义了两个方法:一个是虚拟方法 Eat(),类似于默认实现,子类可以选择重写;另一个是抽象方法 MakeSound(),即未被实现的方法,必须由子类实现。

  • 虚拟类(Virtual Class) 虚拟类是可以被实例化的类,但是它也可以被继承。虚拟类与抽象类一样,允许子类覆盖其方法、属性或事件,但子类并非必须提供实现(基类也可以实现功能方法)
  • 以下是一个简单的虚拟类的例子:
  • public class Shape {
        public virtual void Draw() {
            Console.WriteLine("Drawing shape...");
        }
    }
    
    public class Circle : Shape {
        public override void Draw() {
            Console.WriteLine("Drawing circle...");
        }
    }
    
    static void Main(string[] args) {
        Shape shape = new Circle(); // 把子类对象赋值给父类变量
        shape.Draw(); // 调用圆形的 Draw() 方法
    }
    

    虚拟类 Shape 定义了一个虚拟方法 Draw()它与抽象类不同的是子类不需要实现,而是可以选择重写该方法

  • 私有类(Private Class) 私有类是只能在同一命名空间的程序中使用,并且无法从其他程序集中进行访问。用于封装辅助类或需要在程序集内部使用的开发工具。
  • 以下是一个简单的私有类的例子:
  • namespace MyProgram {
        class Program {
            static void Main(string[] args) {
                Calculator calculator = new Calculator();
                int result = calculator.Add(2, 3);
                Console.WriteLine(result);
            }
    
            private class Calculator {
                public int Add(int a, int b) {
                    return a + b;
                }
            }
        }
    }
    

    私有类 Calculator 定义了一个方法 Add(),在 Program 类的内部实例化,并且调用 Add() 方法。

总结:抽象类、虚拟类和私有类是 C# 中常见的类的特性。它们分别用于提供接口规范、行为的默认实现或子类重写、以及封装一些辅助功能等。使用这些特性可以更加灵活地设计和实现 C# 类库中的各种类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值