首页 > 其他分享 >抽象类和接口

抽象类和接口

时间:2022-09-19 11:11:11浏览次数:71  
标签:实现 声明 扩展 接口 抽象类 方法

抽象类和接口

今天我们将讨论 C# 中最常见和广泛使用的概念之一。它们用于从小型项目到大型企业级项目。让我们开始吧……

抽象类

抽象类是一种特殊类型的类,不能被实例化。抽象类被设计为由实现或覆盖其方法的子类继承。换句话说,抽象类要么部分实现,要么根本不实现。您可以在抽象类中拥有功能——抽象类中的方法既可以是抽象的,也可以是具体的。抽象类可以有构造函数——这是抽象类和接口之间的一个主要区别。您可以利用抽象类来设计组件并指定必须由派生类实现的某种级别的通用功能。

抽象类的语法

 [公共] 抽象类 Abstract_Class_Name  
 {  
 // 字段和属性  
 // 非抽象方法或已完成方法  
 // 抽象方法或不完整方法  
 }

界面

接口基本上是一个契约——它没有任何实现。接口只能包含方法声明;它不能包含方法定义。接口中也不能有任何成员数据。抽象类可能包含方法定义、字段和构造函数,而接口可能只有事件、方法和属性的声明。接口中声明的方法必须由实现该接口的类实现。请注意,一个类可以实现多个接口,但只能扩展一个类。实现接口的类应该实现它的所有成员。像抽象类一样,接口不能被实例化。

接口语法

 [公共] 接口类 Interface_Class_Name  
 {  
 // 字段和属性  
 // 方法签名(声明)  
 }

抽象类和接口的区别

我应该使用抽象还是接口?

抽象类为您提供了具有某些具体方法和派生类应实现的其他一些方法的灵活性。相反,如果使用接口,则需要实现类中扩展接口的所有方法。如果您有未来扩展的计划,那么抽象类是一个不错的选择——即,如果未来的扩展可能在类层次结构中。如果您想在使用接口时为将来的扩展提供支持,则需要扩展接口并创建一个新接口。

另一方面,如果需要,很容易将新接口添加到层次结构中。然而,如果你的层次结构中已经有一个抽象类,你就不能再添加一个——也就是说,只有当没有抽象类可用时你才能添加一个抽象类。如果您想要关于某些行为或功能的合同,您应该使用接口。如果您需要为接口方法编写相同的代码,则不应使用接口。在这种情况下,您应该使用抽象类,定义一次方法,并根据需要重用它。请使用接口将应用程序的代码与其特定实现分离,或限制对特定类型成员的访问。

资源:

https://www.linkedin.com/pulse/abstract-interface-dharshan-kesavan/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/37922/04011911

标签:实现,声明,扩展,接口,抽象类,方法
From: https://www.cnblogs.com/amboke/p/16707027.html

相关文章

  • 服务器接口附件限制【1M】解决办法
     一、业务场景:    在后端与手机小程序端接口传附件时,发现经过云服务器的接口交互,附件超过1M就会有如下提示:<html><head><title>413RequestEntityTooLarg......
  • 【java8新特性】02:常见的函数式接口
    Jdk8提供的函数式接口都在java.util.function包下,Jdk8的函数式类型的接口都有@FunctionInterface注解所标注,但实际上即使没有该注解标注的有且只有一个抽象方法的接口,都可......
  • 面向对象---接口
    JDK1.8之前packagecom.gao.test.Test7;/*1.类是类,接口是接口,他们是同一层次的概念。2.接口中没有构造器3.接口如何声明:interface4.在JDK1.8之前,接口中只有两部分内......
  • Postman批量执行接口
    1、NewCollection  填【脚本】【测试】【参数值】三项,主要是参数项。测试可填:pm.test("测试结果成功", function () {    pm.response.to.have.status(200......
  • go-cqhttp调用接口
    目录调用接口一、概述1、简介2、接口二、接入权限系统1、智能聊天2、戳一戳3、新成员三、调用接口1、查找接口2、调用接口3、接入机器人调用接口一、概述1......
  • python调用第三方接口
    为什么要用python调用第三方接口?以往总是会想当然的认为,调用第三方接口只能是前端的工作,但最近在做一个程序时发现,这项工作完全可以使用python来解决,挺惊喜的,毕竟这样就可......
  • 17.1 xlrd模块 17.2接口自动化第一版17.3pymysql模块 17.4接口自动化第二版
    17.1xlrd模块#xlrd和openpyxl#1.什么是xlrd模块?#python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。#关于xlrd/xlwt和openpyxl的差别#......
  • 15.1sys模块15.2datatime模块15.3logging模块15.4request15.5crm实战15.6参数介绍15.7
    15.1sys模块importsysprint(sys.modules)#描述当前执行代码的位置,解释器中导入的所有模块都会被放在字典中importtimeprint(time.time())print(sys.modules['time'].tim......
  • Java 基础三、接口与内部类
    1.  在Java程序语言中,接口是对类的一种描述。例如Arrays类中sort方法声明可以对对象进行排序,但前提是对象所属的类必须实现Comparable接口。publicinterfaceComparab......
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流
    为什么要限流系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用。为了避免这种情况,我们就需要对......