菩提树的Framework架构

.net 架构,数据库设计,编码规范

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

再谈抽象类与接口的区别

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!");
  }

 

posted on   菩提树下  阅读(1462)  评论(10编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示