C#学习笔记(二十二)抽象类与开闭原则:抽象类和接口怎么来的?

本文详细探讨了抽象类和接口在编程中的关键作用,解释了如何通过抽象方法和虚方法实现开闭原则,以及它们在继承和多态中的应用。从初始化复制到抽象类的出现,再到接口的引入,逐步揭示了这两种设计模式的进化过程和实际用途。

 接口抽象类是面向对象设计中最精妙最关键的部分。

学编程的重点:不是学,而是用。


抽象类:

函数成员没有被完全实现的类。(没有函数体。)

abstract class Student
{
    //只有返回值、函数名和参数列表,没有方法体。完全没有被实现的方法,也就是抽象方法。
    public abstract void Study();
    // 一个类一旦有了抽象方法或者其他抽象成员,这个类就是抽象类。
}

abstract成员不能是private。

因为抽象类的子类去实现抽象类的方法,如果子类都没法访问,就更没法实现了,所以abstract成员不能是private。

编译器不允许实例化一个抽象类。

抽象类核心概念:因为抽象类含有未被实现的函数成员。

如果不能实例化这个抽象类,那么抽象类的功能:抽象类是专门为做基类而生的。

  1. 作为基类派生其他子类。在派生类中把没有实现的函数成员,通过override重写实现了。
  2. 抽象类作为基类,可以用来声明变量。用基类类型的变量去引用子类类型的实例。

抽象类唯一能做的事是专门为做基类而生的。


开闭原则:

我们应该封装一些固定,不变的,稳定的、确定的成员;把不确定的,有可能改变的成员抽象为抽象成员、抽象类,留给子类去实现。

抽象类和开闭原则天生就是一对。


 演化过程:抽象类和接口怎么来的?

 第一步:初始化与复制

我买了一辆车Car,这车能跑Run能停Stop。后来我买了一辆卡车Truck,卡车也可以跑和停。直接把方法粘贴过去,把Car改为Truck。代码如下:

class Car
{
    public void Run()
    {
        Console.WriteLine("Car is running...");
    }

    public void Stop()
    {
        Console.WriteLine("Stopped");
    }
}

class Truck
{
  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值