首页 > 其他分享 >第十一章 抽象类与接口

第十一章 抽象类与接口

时间:2024-09-17 13:53:45浏览次数:13  
标签:第十一章 适配器 接口 抽象 适配 抽象类 方法

一、抽象类和抽象方法

抽象类:使用abstract修饰的类

抽象方法:在类中没有方法体的方法,称为抽象方法,抽象方法用abstract修饰

抽象类中可以没有抽象方法,包含抽象方法的类必是抽象类

如果子类没有实现父类中的全部抽象方法,子类也必是抽象类

没有抽象构造方法,抽象类不能被实例化

抽象类中可以有非抽象构造方法,创建子类的实例时可以调用

抽象类和非抽象子类间也能存在多态性

抽象类中可以有非抽象方法

抽象类可以继承,但是包含抽象方法的抽象类,在继承的时候会报错,因为类中有抽象方法,解决报错的方法有两种,第一种将子类也定义成抽象类,另一种是重写抽象类中所有的抽象方法。

抽象类不能创建对象,但是可以创建抽象类类型的对象,由子类对象赋值

如果一个方法只有存在的意义没有实现的意义,这个方法可以定义成抽象方法,包含抽象方法的类必然是一个抽象类

抽象类存在的意义就是被继承,抽象方法存在的意义就是被重写
抽象类和抽象方法就是为多态服务的,所以抽象类和非抽象之间也存在多态性

二、abstract关键字与其它修饰符

1.abstract和修饰符static不能联用,没有抽象静态方法

2.abstract和修饰符private不能联用,abstract与权限修饰符联用时没有顺序要求,abstract类中不可以有private的额成员

3.abstract和修饰符final不能联用,abstract不能与final同时修饰同一个类

static修饰方法;final修饰;private修饰
不能    重写              重写             继承

三、接口

1.接口:

概念性接口:系统对外提供的所有服务

用关键字interface定义的接口,也称为接口类型

定义接口使用的关键字是interface,类使用class修饰

接口实际上是由常量和抽象方法构成的特殊类

2.组成

静态常量

抽象方法(只有定义,没有实现)

3.定义接口

(1)一般形式

[public] interface 接口名 [extends 父接口名]
{
   [pubic] [static] [final] 类型 常量字段名=值;
     ……
    [public] [abstract] 返回类型 方法名(参数列表);
     ……
}

(2)接口只能用权限修饰符public和默认修饰(一种特殊的抽象类)

(3)每一个接口文件可以包含多个类和接口,但只能有一个文件名和相同的public接口

(4)接口中的常量默认用public static final修饰

(5)接口中的方法默认用public abstract修饰

  4.接口的实现

[public] class 类名 [extends 祖先类名]
                                implements 接口名[,其它 接口名……]
{
 //类的实现代码
     ……
 }
5.接口与接口的关系

继承:接口可以继承一个或多个其它接口,并添加新的属性、方法

6.接口与类的关系:

(1)类实现接口:多个(无关)类可以实现同一接口,多个(无关)接口也可以被一个类实现(多对多的关系)
(2)与子类继承抽象类相似,当非抽象类实现接口时必须实现接口中的所有(抽象)方法,否则定义为抽象类
(3)一个类只能继承一个直接父类,但能实现一个或多个接口;
(4)类在继承其他类的同时也可以实现一个或多个接口,但要保证关键字extends在implements前使用

7.接口无构造方法,不能创建接口的实例,但可以定义接口类型的引用变量,该变量的引用是这个接口的实现类的实例

8.接口与实现类之间也存在多态性

jdk1.8之后接口中可以有非抽象的方法
 
一个接口文件中可以包含多个接口和多个类

可以有0个或一个由public修饰的接口

public修饰的接口的名字要跟文件的名字一样

接口与接口之间是存在继承关系的,但是是多继承关系

类和类之间存在继承关系,是单继承关系

接口和类之间没有关系,接口在前类在后

类和接口之间是实现的关系,使用implements关键字表示实现关系,而且是多实现关系,类在前接口在后

一个类可以同时继承一个类实现多个接口,但是要求继承在实现之前

类实现接口的时候需要重写接口中所有的抽象方法,否则要把该类定义成抽象类否则编译报错

接口不能创建对象
可以创建接口类型的对象,由实现类赋值
接口也可以存在多态

 在继承接口的类中通常要给出接口中定义的抽象方法的具体实现

四、抽象类与接口

对比1:

类只能继承一个抽象类

类可以实现多个接口

对比2:

抽象类可以有部分方法的实现,防止子类的重复实现,介于实现与抽象间的“半成品”

接口中没有方法的实现,完全是“抽象的”

对比3:

抽象类可扩展性好:可以加入属性和非抽象方法

接口要求稳定:加入的方法都是抽象方法,(如果扩展)实现类可能会出现问题

对比4:

抽象类中的抽象方法必须加abstract关键字

抽象类中的抽象方法可以不加abstract关键字(接口中的方法都是抽象方法)

五、工厂模式

1.工厂(方法)模式:是一种创建模式,实例化同一接口(父类)的多令工厂个类
2.设计:定义创建产品对象的工厂类,由工厂类创建实现(继承)同-接口(父类)的多个类对象
3.分类:
工厂方法:一个工厂方法,通过字符串判断,创建不同类的对象
多个工厂方法:多个工广方法,通过不同方法创建不同类的对象
静态工厂方法(简单工厂方法):多个静态方法
4.何时使用:
大量需要实例的类
实现(继承)同一接口(父类)

六、适配器模式

1.适配器模式(Adapter Pattern)

也叫包装器模式(Wrapper Pattern)

定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作

2.分类

类的适配器模式:用于对类进行适配                                                                                                                               何时使用:类转换成满足另一接口时

对象的适配器模式:用于对对象进行包装                                                                                                                        何时使用:类转换成满足另一接口时

接口的适配器模式:用于对接口抽象化                                                                                                                             何时使用:当不希望实现一个接口的所有方法

3.三个角色

源角色(220V电源):需要适配的目标类或接口

目标角色(计算机的电源接口):期望得到的接口

适配器角色(计算机电源变压器):用于把源角色转换成目标角色

4.何时使用

系统需要使用现有的类,而这些类的接口不符合系统的需要

七、适配器模式优缺点

适配器模式的优点如下:
1.将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无需修改原有代码
2.增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性
3.灵活性和扩展性都非常好,通过使用配置文件,可以很方便地更换适配器,也可以在不修改原有代码的基础上增加新的适配器类,完全符合“开闭原则”
4.由于适配器类是适配者类的子类,因此可以在适配器类中置换一些适配者的方法,使得适配器的灵活性更强

对象适配器模式的缺点如下:
与类适配器模式相比,要想置换适配者类的方法就不容易。如果一定要置换掉适配者类的一个或多个方法,就只好先做一个适配者类的子类将适配者类的方法置换掉,然后再把适配者类的子类当做真正的适配者进行适配,实现过程较为复杂

标签:第十一章,适配器,接口,抽象,适配,抽象类,方法
From: https://blog.csdn.net/2201_75345199/article/details/142313318

相关文章

  • C++11 线程同步接口std::condition_variable和std::future的简单使用sk
    合集-C++(1)1.C++11线程同步接口std::condition_variable和std::future的简单使用09-17收起std::condition_variable条件变量std::condition_variable有wait和notify接口用于线程间的同步。如下图所示,Thread2阻塞在wait接口,Thread1通过notify接口通知Thread2继续执行。......
  • 基于通信协议与技术架构的API接口分类探讨
    API的全称是“ApplicationProgrammingInterface”,意为“应用程序编程接口”API接口的分类:按照技术分WebAPI:基于Web的API,通过HTTP和HTTPS协议与应用程序交互,如RESTfulAPI和SOAPAPI。云API:用于在云计算环境中管理和操作云服务,例如AmazonWebServicesAPI和MicrosoftA......
  • 文本多语言 AI 摘要 API 数据接口
    文本多语言AI摘要API数据接口文本/文本摘要AI生成文本摘要AI处理/智能摘要。1.产品功能支持多语言摘要生成;支持长文本处理;基于AI模型,持续迭代优化;不存储PDF文件,处理完即释放,保证您的文档安全;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容Ap......
  • C++11 线程同步接口std::condition_variable和std::future的简单使用
    std::condition_variable条件变量std::condition_variable有wait和notify接口用于线程间的同步。如下图所示,Thread2阻塞在wait接口,Thread1通过notify接口通知Thread2继续执行。具体参见示例代码:#include<iostream>#include<mutex>#include<thread>#include<queue>std......
  • 不服不行,这才是后端API接口应该有的样子!
    在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。一般系统的大......
  • 惊艳不已!智能解析10个API接口分类
    常见的API接口开发平台:通信类短信API语音API彩信APIFAXAPIIVRAPITTSAPI在线客服API短信/语音验证码API定时提醒API常见的API接口开放平台:测评类API便捷数据网常见的API接口开发平台:通信类iContact、Mailgun、Mandrill、SendGrid:都是云邮件发送平台,提供易于使......
  • 用户空间实现文件系统的接口FUSE(Filesystem in Userspace)API介绍
    FUSE(FilesysteminUserspace)API是一种在用户空间实现文件系统的接口。一、FUSEAPI的作用它允许开发者在不修改内核代码的情况下,创建自定义的文件系统。通过FUSEAPI,你可以实现各种特殊用途的文件系统,比如网络文件系统、加密文件系统、虚拟文件系统等。二、工作原理用户空间程......
  • 怎么编写程序化交易系统,股票交易接口API如何申请
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • 关于API淘宝数据接口
    在当今数字化商业时代,淘宝作为全球领先的电商平台,提供了丰富的API接口,使开发者能够高效地获取和管理电商数据。淘宝API接口不仅简化了与淘宝平台的交互,还为商家提供了强大的数据支持,帮助他们更好地分析市场趋势、优化店铺运营、提升用户体验。淘宝API接口概述淘宝API接口是一组......
  • Java接口的艺术:探索接口特性与面向接口编程
     在Java的世界里,接口(Interface)是一种强大的抽象机制,它定义了一组方法规范,但不实现这些方法。接口在Java编程中扮演着至关重要的角色,特别是在实现多态和面向接口编程(Interface-OrientedProgramming,IOP)方面。本文将深入探讨Java接口的特性、接口实现多态的方式,以及面向接口编程的......