1.一个抽象类仍然可以有实现:它能够有成员,非抽象方法或属性,而接口不能有实现和成员变量。
2.一个.Net类只能从一个基类中派生,即基类是抽象的。然而,提个.Net类可以根据需要实现多个接口。
3.抽象类可以从其他类或从一个接口或多个接口中派生,而接口只能从另外一个接口中派生。
4.抽象类能够有分公共方法和属性,即便它们都是抽象的,根据定义接口中所有成员都是非公共的。
5.抽象类中可以有静态方法和静态成员,同时定义常量,而接口不包含其中任何一个。
附:抽象类使用的经典例子:
using System;
abstract class Vehicle //定义汽车类
{
public int wheels; //公有成员:轮子个数
protected float weight; //保护成员:重量
public Vehicle(int w,float g){
wheels=w;
weight=g;
}
public virtual void Speak(){
Console.WriteLine("the w vehicle is speaking!");
}
};
class Car:Vehicle //定义轿车类
{
int passengers; //私有成员:乘客数
public Car(int w,float g,int p):base(w,g)
{
wheels=w;
weight=g;
passengers=p;
}
public override void Speak(){
Console.WriteLine("The car is speaking:Di-di!");
}
}
class Truck:Vehicle //定义卡车类
{
int passengers; //私有成员:乘客数
float load; //私有成员:载重量
public Truck(int w,float g,int p,float l):base(w,g)
{
wheels=w;
weight=g;
passengers=p;
load=l;
}
public override void Speak(){
Console.WriteLine("The truck is speaking:Ba-ba!");
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?