C#学习9——接口、抽象类

一、接口
1.什么是接口

官方话:是一种定义契约(一组方法、属性、事件或索引器的抽象声明)的机制,它规定了实现该接口的类或结构必须提供这些成员的具体实现。接口是面向对象编程中实现多态和抽象的重要工具。

个人理解:策划书(规定了需要实现什么功能)

2.接口定义

修饰符 interface 接口名

{

方法;

属性

}

3.接口的使用:
cs 复制代码
using System;

// 接口定义
interface IAnimal
{
    void Speak(); // 动物发声方法
}

// 实现类:狗
class Dog : IAnimal
{
    public void Speak() => Console.WriteLine("汪汪汪");
}

// 实现类:猫
class Cat : IAnimal
{
    public void Speak() => Console.WriteLine("喵喵喵");
}

class Program
{
    static void Main()
    {
        IAnimal dog = new Dog();
        IAnimal cat = new Cat();
        
        dog.Speak(); // 输出:汪汪汪
        cat.Speak(); // 输出:喵喵喵
    }
}

类似重写,但又不一样

一句话总结

  • 接口:"你必须能做这件事,但具体怎么做我不管"(如:所有厨师都要会做宫保鸡丁)。
  • 重写:"你爹是这么做的,但你可以改"(如:祖传宫保鸡丁要放花生,你可以改成放腰果)。
二、抽象类
1.什么是抽象类?

官方话语:抽象类是 C# 中一种特殊的类,它不能被实例化,主要用于作为其他类的基类(父类)。抽象类的核心特点是可以包含抽象方法(只有方法定义,没有实现),这些抽象方法必须由继承它的子类实现。

个人理解:带模板的策划书

2.定义抽象类

访问修饰符\] abstract class 类名 { // 抽象成员(必须由子类实现) \[访问修饰符\] abstract 返回类型 抽象方法名(参数列表); \[访问修饰符\] abstract 属性类型 抽象属性名 { get; set; } ... } ###### 3.使用抽象类: eg: ```cs // 抽象类:动物 abstract class Animal { public abstract string Sound { get; } // 抽象属性 public abstract void Speak(); // 抽象方法 public void Eat() => Console.WriteLine("吃东西"); // 普通方法 } // 子类:狗 class Dog : Animal { public override string Sound => "汪汪"; public override void Speak() => Console.WriteLine(Sound); } // 使用示例 Animal dog = new Dog(); dog.Speak(); // 输出:汪汪 dog.Eat(); // 输出:吃东西 ``` ##### 三、接口和抽象类的区别 | **抽象类** | **接口** | |---------------------|-----------------------------| | 可以包含抽象方法和普通方法 | 只能包含方法签名(不能有实现) | | 子类使用 `:` 继承一个抽象类 | 子类使用 `:` 实现多个接口 | | 用于定义一组相关类的共同行为和部分实现 | 用于定义不相关类的共同行为(如 "可打印""可排序") | | 关键字:`abstract` | 关键字:`interface` |

相关推荐
先生沉默先1 小时前
Nginx 反向代理学习:单端口统一访问多服务
学习·nginx·arcgis
菜泡泡@1 小时前
仓库地图vue-grid-layout
前端·javascript·vue.js
u***u6853 小时前
React环境
前端·react.js·前端框架
X***E4633 小时前
前端数据分析应用
前端·数据挖掘·数据分析
4***14903 小时前
React社区
前端·react.js·前端框架
LFly_ice3 小时前
学习React-24-路由传参
前端·学习·react.js
陈天伟教授4 小时前
基于学习的人工智能(3)机器学习基本框架
人工智能·学习·机器学习·知识图谱
毕设源码-钟学长4 小时前
【开题答辩全过程】以 高校课程学习评价系统设计与实现为例,包含答辩的问题和答案
学习
Lhuu(重开版4 小时前
CSS:动效布局动画
前端·css
Q***K554 小时前
前端构建工具
前端