抽象类与抽象方法
1、书写规范:
在类前面加上abstract关键字,就成为了抽象类;在一个方法前面加上abstract关键字,就成为了抽象方法(抽象方法不能有实现方法,直接在后面加分号)
例:
abstract class Chouxiang //抽象类 { public abstract void fangfa(); //抽象方法 }
2、抽象类的注意事项:
1)当一个类变为抽象类之后就不能作为对象来使用了,无法new出来
2)抽象方法必须放在抽象类里面(但抽象类中不一定有抽象方法)
3)没有子类的话可以正常运行
4)抽象类里面的方法只能在该类中调用,若在其他类中调用需要通过子类
3、抽象方法的注意事项:
1)抽象方法里面不能写内容(不能创建对象)
2)子类中必须override才能运行
3)有几种抽象方法,就必须在子类中写几种,否则出错
4、在子类中重写抽象基类的方法:
class Lei:Chouxiang { public override void fangfa() { Console.WriteLine("抽象类"); } }
5、在函数中引用抽象类的子类对象:
抽象类 抽象类变量名 = new 继承自此抽象类的具体子类名();
例:
Chouxiang c = new Lei(); c.fangfa(); //打印出来结果为“抽象类”
注:包含抽象方法的类一定是抽象类,但抽象类中的方法不一定是抽象方法。
接口
当一个类与多个类之间都存在关系时,单纯用父子关系无法表达出来,为了解决这个问题,引入了接口这个概念,使一个类可以对应多个接口。
接口可以看做一种“纯”的抽象类,它的所有方法都是抽象方法。
1、接口的定义与使用:
用关键字interface定义接口。例:
public iterface Iswim { void Swim(); //接口中不能写字段、方法,Swim()相当于抽象方法,需要在继承该接口的类中重写 } public iterface Ifood { void Cook(); }
实现接口可以用与继承相同的语法。例:
1 //定义一个抽象类,使Duck继承自一个抽象类,实现两个接口 2 public abstract class Bird 3 { 4 public abstract void Fly(); 5 } 6 public class Duck:Bird,Iswim,Ifood 7 { 8 //实现Iswim接口 9 public void Swim() 10 { 11 Console.WriteLine("swim"); 12 } 13 //实现Ifood接口 14 public void Cook() 15 { 16 Console.WriteLine("cook"); 17 } 18 //实现抽象类Bird中的抽象方法 19 public override void Fly() 20 { 21 Console.WriteLine("fly"); 22 } 23 }
使用接口需要套用公式:接口类型名 变量名 = new 实现了接口的类型名();如:
Duck d = new Duck(); d.Fly(); d.Cook(); d.Swim();
分类:
C#面向对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?