当前位置: 首页 > news >正文

C#核心(24)结构体和类的区别,抽象类和接口的区别(面试常问)

前言

随着上一节我们对StringBulider的讲解落下帷幕,c#核心的知识点我们也即将告一段落,我们讲完了面向对象要用的三大特性(封装,继承,多态)和七大原则。期中自然也不乏一些小的散的碎的的知识点。

今天我们要讲的也正如标题所说,是面试里经常用来开门拷打你的问题

所以我们今天主要讲结论(为了帮助你更好的背诵来对付面试),至于为什么,或者说你想探究他的深层原理,那博主可能就爱能莫助了,我们今天在这里都只会进行很简单的探讨(因为博主水平还没那么厉害,足够厉害了再发一篇讲的更细的),大家主要记住结论。

自然,你想自己根据先前学的知识自己梳理一下也是可以的。

在这节,我们也会简单探讨一下使用的场景和情况,供大家参考。

结构体和类的区别

区别概述

  1. 结构体和类最大的区别在存储空间上,结构体是类型,类是引用类型。
  2. 这意味着,结构体的存储空间在栈上,类的存储空间在堆上
  3. 结构体有封装,但是无继承和多态,也就是说不能使用protected
  4. 结构体的赋值不能为空,类可以。

细节区别

  • 结构体成员变量申明指定初始值 

  • 结构体不能申明无参构造函数,析构函数

  • 需要你进一步专研

结构体的特别之处

结构体可以继承接口,因为接口是行为的抽象,接口是一种只包含方法、属性、事件和索引器的抽象类型,定义了对象应有的行为。它们不依赖于特定的实现,因此结构体和类都可以实现相同的接口。

如何选择

  1. 用继承多态的场景选类
  2. 数据结合为对象优先结构体(类也可以,但是不建议)
  3. 值和引用类型的考虑

抽象类和接口的区别

相同点

  1. 都可以被继承

  2. 都不能直接实例化

  3. 都可以包含方法的申明 

  4. 子类必须实现没有实现的方法

  5. 满足里氏替换原则

区别

  1. 抽象类中可以有构造函数 ,接口不行

  2. 抽象类是单一继承,但是接口可以继承多个

  3. 抽象类中可以有成员变量

  4. 抽象类中也可以申明方法

  5. 抽象类中有访问修饰符

选择 

区别对象和行为的差距,然后在抽象类和接口中进行选择。这两个都是为了规范出现的东西,母的是帮助我们更好规范我们的编程行为。

总结

在本节中,我们深入探讨了 C# 中结构体和类以及抽象类和接口的相关知识,为应对面试提供关键结论。主要学习了以下要点:

  1. 结构体和类的区别
    • 核心差异:结构体为值类型,存储于栈上;类是引用类型,存储在堆上。结构体仅有封装,无继承与多态,不能用 protected;类具备封装、继承和多态。结构体赋值不可为空,类则可以。
    • 细节特性:结构体成员变量声明不能指定初始值,且无法声明无参构造函数和析构函数。不过,结构体能够继承接口,因其抽象行为不依赖特定实现,与类一样可实现相同接口。
    • 应用场景:涉及继承多态时优先选类;将数据组合为对象,结构体是较好选择(类虽也能实现,但不推荐)。
  2. 抽象类和接口的区别
    • 共同特性:二者均可被继承,不能直接实例化,可包含方法声明,子类必须实现未实现的方法,均遵循里氏替换原则。
    • 不同之处:抽象类有构造函数,接口没有;抽象类是单一继承,接口可多重继承;抽象类可拥有成员变量、声明方法并设置访问修饰符。
    • 选用准则:依据对象与行为的差异,在抽象类和接口间抉择,它们的存在旨在规范编程行为。

请期待我的下一篇博客!

期待您的关注与支持,感谢您对于佑梦游戏开发的关注!

相关文章:

  • LRU算法
  • 智能超表面通信控制板--通道电压并行控制版
  • 【网络入侵检测】Suricata之数据包内容匹配
  • ABAP_报表权限校验_拿来即用
  • Excel表格转Json格式
  • springboot启动动态定时任务
  • GTX 不同复位之间的区别
  • LeetCode-16.最接近的三数之和 C++实现
  • 保姆级教程:RK3588部署yolo目标检测模型
  • HarmontOS-ArkUI V2状态 !!语法糖 双向绑定
  • AI(人工智能)学习中的主要分类及其详细说明
  • Python异常处理全面指南
  • Spring Batch 专题系列(七):Spring Batch 与数据库集成
  • Apipost,前端后端测试都在用的接口设计调试工具
  • python——循环语句
  • 如何选择合适的数据类型以节省存储空间和提升查询效率?
  • Android 应用添加Tile到SystemUI QuickSettings
  • 微信小程序边框容器带三角指向
  • 力扣热题100——普通数组(不普通)
  • 广告ROI提升警报:亚马逊新功能如何重构卖家流量漏斗
  • 做网站销售的/市场营销策划案例经典大全
  • 如何在税务局网站做纳税登记/禁止搜索引擎收录的方法
  • 长沙做网站建设公司排名/网络销售怎么找客源
  • 做分析图地图网站/麒麟seo软件
  • 网站建设公司普遍存在劣势/提高工作效率的工具
  • 编程scratch网站/百度的人工客服电话