抽象类和接口的区别(里面有适配器设计、工厂设计、代理设计模式)

从频谱入手搞定ESD:手把手教你用示波器和频谱仪分析静电干扰(以Type-C接口为例) 本文详细介绍了如何利用示波器和频谱仪分析Type-C接口的ESD干扰问题。通过频谱特性分析、耦合路径诊断和实战测试,提供了一套完整的ESD防护方案,包括三级防护设计和器件选型建议,帮助工程师有效解决静电放电导致的系统故障。 阅读详情

在MyWindow 类肯定要覆写全部方法,但是现在希望可以根据自己的需要选择性的覆盖某些方法。那么该怎么实现呢?

用一个类先将接口实现了,但是所有的实现都属于空实现。然后再继承这个类。应该使用抽象类,因为抽象类也不能直接使用。

适配器设计模式:只要接口和抽象类相互使用,就叫适配器模式。

1.        interfaceWindow{

2.          public void open() ;            // 打开窗口

3.          public void close() ;            // 关闭窗口

4.          public void icon() ;             // 最小化

5.          public void unicon() ;         // 最大化

6.        }

7.        abstractclass WindowAdapter implements Window{

8.          public void open(){}

9.          public void close(){}

10.         publicvoid icon(){}

11.         publicvoid unicon(){}

12.       };

13.       class MyWindow extends WindowAdapter{

14.         publicvoid open(){

15.                       System.out.println("打开窗口!") ;

16.         }

17.       };

18.       public class AdpaterDemo{

19.         publicstatic void main(String args[]){

20.                       Windowwin = new MyWindow() ;

21.                       win.open();

22.         }

23.       }

工厂设计模式:

所有接口的实例化对象都是通过工厂类取得的。那么客户端调用的时候根据传入的名称不同完成的功能也不同。

有如下一段代码

interface Fruit{

              public void eat() ;

 

}

class Apple implementsFruit{

              public void eat(){

                            System.out.println("吃苹果") ;

              }

} ;

class Orange implements Fruit{

              public void eat(){

                            System.out.println("吃橘子") ;

              }

} ;

class Foctory{ //工厂类

              public static FruitgetFruit(String className){

                            Fruit f  = null ;

                            if("apple".equals(className)){

                                          f =new Apple() ;

                            }

                            if("orange".equals(className)){

                                          f =new Orange() ;

                            }

                            return f ;

              }

} ;

public classInterDemo{

              public static void main(Stringargs[]){

                            Fruit f =Foctory.getFruit(args[0]) ;

                            if(f!= null ){

                                          f.eat();

                            }

              }

}

 

if("apple".equals(className)){

                                          f =new Apple() ;

                            }

这段代码是把apple写在前面,在以后的开发中,如果有字符串跟常量(这里是apple)比较,要永远把常量写在字符串的前面去。这样可以避免空指向异常。

代理设计模式:

刘某欠张某的钱,刘某有钱不还,所以张某找到讨债公司。讨债公司找刘某要钱。

                                                          要钱

张某---------------------》找到讨债公司-------------------》刘某

interface Give{

              public void giveMoney() ;

}

class RealGiveimplements Give{

              public void giveMoney(){

                            System.out.println("把钱还给我")  ;

              }

} ;

class ProxyGiveimplements Give{

              private Give give = null ;

              public ProxyGive(Give give){

                            this.give = give ;

              }

              public void before(){

                            System.out.println("刀子、枪支等。。。。。。。") ;

              }

              public void giveMoney(){

                            this.before() ;

                            this.give.giveMoney();

                            this.after() ;

              }

              public void after() {

                            System.out.println("销毁所有证据。。。。。。。") ;

              }

} ;

public classProxyDemo{

              public static void main(Stringargs[]){

                            Give give = newProxyGive(new RealGive()) ;

                            give.giveMoney() ;

              }

}

最核心的就是这个代理类,它是真实的讨债人,做了真正的工作。这就是代理设计模式。

 

抽象类和接口(绝对重点)

2

比较点

抽象类

接口

1

组成

抽象方法、、普通方法、构造方法、常量、变量、全局常量

抽象方法、全局常量

2

定义

Abstract

Interface

3

子类

通过extends继承抽象类

通过implements实现接口

4

限制

一个子类只能继承一个抽象类

一个子类可以实现多个接口

5

 

 

关系

一个抽象类可以实现多个接口,

但是一个接口不能实现继承一个抽象类。只能实现多个接口。

一个抽象类中可以包含多个接口

一个接口中可以包含多个抽象类

6

设计

模板设计

工厂设计、代理设计

两个一起操作可以完成适配器设计模式。

7

实例化

都是通过对象的多态性,通过子类进行对象的实例化操作

8

实现限制

存在单继承局限

不存在此类局限

9

特性

 

表示一个标准,一种能力

从以上表格可以看出,如果抽象类和接口同时都可以使用的话优先使用接口,因为接口可以避免单继承的局限。

Frigate进阶玩法:如何用MQTT和Python脚本扩展你的自定义目标检测算法 本文详细介绍了如何通过MQTT和Python脚本扩展Frigate的自定义目标检测算法,无需修改源码即可实现特殊场景(如工业设备异常、农业病虫害识别)的高效检测。文章涵盖Frigate配置、外部检测服务构建、高级集成技巧及性能优化实践,帮助开发者灵活扩展智能监控能力。 阅读详情

相关推荐

微带线,带状线和接地共面波导的区别

微带线,带状线和接地共面波导的区别

sky_ying的博客 3万+

理解什么是适配器(adapter)和接口(interface)

● 适配器(adapter) In computing, adapter is a hardware device or software component that converts transmitted data from one presentation form to another. The data presentation can be, for...

aa123kk78011的专栏 2018

Unity Hub报错The Hub as encountered a critical error and must close

如果注册表HKEY_LOCAL_MACHINE\SOFTWARE\Unity Technologies\这个目录下有Hub文件,直接删掉然后重装就可以。C:\Users\Administrator\AppData\Roaming\Unity 作者:SevenVee。HKEY_CURRENT_USER\Software\Unity 下所有项,尝试过,卸载重装,清除临时文件无果后,最终决定删除所有与Hub有关的文件。重装unity后可以打开了。结果:卸载重装后还是会出现此问题。结果:重装后还是无法解决。

qq_42345116的博客 3638

适配器和监听接口的区别

区别:适配器只需重写需要的事件处理方法,而监听接口需要实现全部的方法。监听接口中定义了抽象的事件处理方法,这些方法针对不用的操作进行不同的处理。在程序中,通常使用监听类实现监听接口中的事件处理方法。...

王小波的博客 2204

别再为环保数采仪通讯发愁!手把手教你用MCGS触摸屏+4G模块发送HJ212报文

本文详细介绍了如何使用MCGS触摸屏配合4G模块高效发送HJ212标准报文,解决工业环保监测中的数据采集与传输难题。从硬件连接到软件配置,再到报文组装与发送策略,提供全流程实用指南,特别针对4G网络环境下的特殊设置给出优化建议,帮助工程师提升数据传输稳定性与效率。

weixin_30847865的博客 389

Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码)

本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。

weixin_29280657的博客 477

设计模式之结构型模式

结构型模式是用来设计程序的结构的。结构型模式就像搭积木,将不同的类结合在一起形成契合的结构。包括以下几种: 适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式 适配器模式 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 在适配器模式中,我们通过增加一个新的适配器类来解决接口不兼容的问题,使得原本没有任何关系的类可以协同工作。

qq_22162093的博客 380

基因组注释(Annotation)

Annotation

hgz2020的博客 6492

【Java笔记】面向对象编程-抽象类与接口 - 抽象类、模板设计模式、接口、工厂设计模式、代理设计模式 - 总结四

面向对象编程-抽象类与接口 1. 抽象类的定义与使用 范例1: abstract class Person{ private String name ; // 属性 public String getName(){ // 普通方法 return this.name; } public void setName(String name){ ...

qq_43109561的博客 359

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1023

C++(Qt)软件调试---内存分析工具Heob(26)

绝对最全面最详细的Heob使用说明。(图文并茂) 绝大部分的文章都说Heob是一个内存泄漏分析工具,其实Heob只是内存泄漏分析功能比较突出,实际上Heob可以分析很多内存问题。 Heob是一个Windows下检测缓冲区溢出(野指针、空指针、内存越界、重复释放、异常捕获等)和内存泄漏的工具,集成到Qt Creator中,功能强大,简单容易上手。

mahuifa的博客 4312

抽象类和接口的详解(实例)

抽象类和接口在我们的代码中,生活中息息相关,与上图所示,操纵复杂,密切相关,那么问题来了,何谓抽象类,何谓接口?带着这层薄纱,慢慢揭开这层薄纱;也许在古代,新婚之夜,透过这层薄纱,你看到的或者是惊喜,或许是惊悚,不要怕,无论是惊悚还是惊喜,她都会伴你一生。 曾几何时?你还会在面试当中与面试官对答如流的解释抽象类和接口吗? 面试官:解释一下抽象类和接口的区别? me: 1、抽象类和接口都不能直

chajinglong的专栏 2万+

6-Halcon-- var_threshold 函数功能(用于基于局部统计特性的动态阈值分割的算子)

var_threshold 是 HALCON 中用于基于局部统计特性的动态阈值分割的算子,特别适用于处理低对比度图像或纹理均匀但包含细微差异的场景。与 dyn_threshold 不同,它不依赖预处理生成的参考图像,而是直接在局部区域内计算灰度值的统计特性(均值和标准差),从而自适应调整阈值。

weixin_45590420的博客 1327

接口与抽象类的应用(包括各自设计模式)

一、目标 1)掌握抽象类和接口的实例化操作。 2)掌握模板设计的作用。 3)掌握工厂设计模式的作用。 4)掌握代理设计模式的作用。 5)掌握适配器模式的作用。 6)掌握抽象类和接口的使用区别。 二、具体内容 2.1 为抽象类和接口实例化 在java中,可以通过对象的多态性,为抽象类和接口实例化,这样在使用抽象类和接口的时候,就可以调用本子类中所覆写过的方法。之所以抽象类和接口不能...

lxm20819的专栏 277

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA学习之抽象类和接口的应用

1.  为抽象类和接口实例化             在java中可以通过对象的多态性,为抽象类和接口实例化,这样再使用抽象类 和接口的时候就可以调用本子类中所覆写过的方法了。             之所以抽象类和接口不能直接实例化,是因为其内部包含了多个抽象方法,抽 像方法本身都是未实现的方法,所以无法调用。             通过对象多态性可以发现,子类发生了向上转型关系之后...

好大一只猫呀 351

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

面向对象(高级)抽象类与接口的应用

本章目标: 掌握抽象类及接口的实例化操作 掌握模板设计的作用 掌握工厂设计模式应用 掌握代理设计模式应用 掌握适配器设计模式应用 掌握抽象类与接口的使用区别 为抽象类与接口实例化 在java中可以通过对象的多态性,为抽象类和接口实例化,这样再使用抽象类和接口的时候就可以本子类中所覆写过的方法了。 之所以抽象类和接口不能直接实例化,是因为其内部包含了各个抽象方法,抽象方

牛儿吃草的博客 2504

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Java设计模式方面的面试题大全

1.接口是什么?为什么要使用接口而不是直接使用具体类? 接口用于定义 API。它定义了类必须得遵循的规则。同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如 List 接口,你可以使用可随机访问的 ArrayList,也可以使用方便插入和删除的 LinkedList。接口中不允许写代码,以此来保证抽象,但是 Java 8 中你可以在接口声明静态的默认方法,这种方法是具体的。 2.java中,抽象类与接口之间有什么区别? 1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。 2.

hsm_computer的博客 1180

java知识3-----核心2-面向对象高级 续2

抽象类、接口的区别及应用用---设计模式:模板设计、工厂设计、代理设计、适配器设计

jakezhang1990的专栏 234

再看抽象类与接口

3.1、抽象类与接口(☆) 抽象类更多的情况下是作为一个模板使用,而接口更多的情况下是作为一个标准出现。 3.1.1、适配器设计 一个子类如果实现了一个接口,则肯定要覆写接口中的全部方法,那是否有一种方式,可以让子类有选择的去实现接口中的方法,而不是全都实现呢? interface A{ public v...

weixin_34194317的博客 111

Java基础4---面向对象之抽象类与接口

抽象类和接口在我们的代码中,生活中息息相关,与上图所示,操纵复杂,密切相关,那么问题来了,何谓抽象类,何谓接口? 带着这层薄纱,慢慢揭开这层薄纱;也许在古代,新婚之夜,透过这层薄纱,你看到的或者是惊喜,或许是惊悚,不要怕,无论是惊悚还是惊喜,她都会伴你一生。 1 曾几何时?你还会在面试当中与面试官对答如流的解释抽象类和接口吗? 面试官:解释一下抽...

weixin_41944347的博客 237

抽象方法与接口

抽象类不能实例化,而且必须被子类继承,子类需要实现所有的方法。   接口是一个特殊的类,由抽象方法和全局常量组成(public static final)   适配器设计模式 interface Window{          public void open() ;  // 打开窗口          public void close() ;  // 关闭窗口

554

Java面向对象总结(高级篇)

自问自答: 1、子类对象实例化过程中构造方法的调用顺序? 答:就像生活中先有父母才再有孩子。 2、当父类有多个构造方法时,子类怎样调用特定的构造方法? 答:通过super()关键字来实现。 3、this与super的相似与区别? 答: 4、重载与覆写的区别? 答: 5、如果父类()的方法不希望被子类覆写,该怎么办? 答:用final关键字(完结器)声

zhangze_wancheng的专栏 959

设计模式--工厂模式、适配器模式和代理模式

工厂模式目的是将创建对象的具体过程屏蔽隔离起来,从而达到更高的灵活性,工厂模式分为三类: 简单工厂模式 || 工厂方法模式 || 抽象工厂模式。

Baizeh的博客 3571

❤️设计模式肝完了,还挺全!腾讯和阿里的offer已拿!❤️

设计模式肝完了,还挺全!腾讯和阿里的offer已拿! 金九银十已经来了,挺近大厂最好的机会已经来了!如果你是要找工作的,一定要抓住这个机会! 前面已经整理了很多的面试资料: 1,❤️爆肝!整理了一周的Spring面试大全【含答案】,吊打Java面试官【建议收藏】!❤️ 2,❤️肝完了,一天掌握数据结构和算法面试题,吊打面试官,建议收藏❤️ 3,❤️集合很简单?开什么玩笑?肝了一周,全是精华,万字讲解!面试再不怕集合问题了!!!❤️ 4,肝完了,总结了SpringBoot与缓存的知识点,快速掌

程序员springmeng 6万+

Java设计模式总结篇:七大原则以及23种设计模式简单介绍

主要介绍七大原则和23种设计模式 原则:1、单一原则2、开闭原则3、里氏替换原则4、接口隔离原则5、依赖倒置原则6、迪米特法则7、合成复用原则 设计模式:1、单例模式2、工厂模式3、抽象工厂模式4、原型模式5、建造者模式6、适配者模式7、桥连模式8、装饰者模式9、享元模式10、代理模式11、组合模式12、外观模式13、状态模式14、责任链模式15、迭代器模式16、观察者模式17、策略模式18、模板方法模式19、解释器模式20、中介者模式21、备忘录模式22、命令模式23、访问者模式

小庄的博客 3546

抽象类与接口的应用

目录 一 、为抽象类和接口实例化 二 、抽象类的实际应用----模板设计 三 、接口的实际应用----制定标准 四 、设计模式 ---- 工厂设计 五 、设计模式 ---- 代理设计 六 、设计模式 ---- 适配器设计 七 、抽象类与接口之间的关系 一 、为抽象类和接口实例化 在Java中可以通过对象的多态性为抽象类和接口实例化,这样在使用抽象类和接口时即可调用子类中...

Rachel_pan的博客 696
上一篇: 什么是钩子方法
下一篇: 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等
HackProgramer
博客等级 码龄12年 255粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值