首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

实现一个接口和添加一个新方法有区别吗?

实现一个接口和添加一个新方法是有区别的。

实现一个接口是指一个类实现了某个接口中定义的所有方法,这意味着该类必须提供接口中定义的所有方法的具体实现。接口是一种规范,定义了一组方法的签名,但没有具体的实现。通过实现接口,类可以表明自己具备了接口所定义的行为。

添加一个新方法是指在一个类中新增一个方法,该方法可以是类的自有方法,不需要遵循接口的定义。通过添加新方法,可以为类增加新的功能或行为。

区别在于:

  1. 实现接口是为了符合某个接口的规范,必须提供接口中定义的所有方法的具体实现;而添加新方法是为了增加类的功能,不需要遵循接口的定义。
  2. 实现接口是一种约束,表示类具备了接口所定义的行为;而添加新方法是类的自有方法,不受接口的限制。
  3. 实现接口可以使类具备多态性,可以通过接口类型引用实现了该接口的类的对象;而添加新方法不涉及多态性。

总结: 实现接口是为了符合接口的规范,必须提供接口中定义的所有方法的具体实现;而添加新方法是为了增加类的功能,不需要遵循接口的定义。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 依赖倒置就是每一个实现都要抽一个接口出来

    “ A: 我觉得我们现在的抽象有点多,infra 层里面每一个类都抽取了接口,这些被调用的类多半只有一个实现,我们是不是做的太细了?...B: 从依赖倒置的角度讲,domain 层 service 层并不应该直接调用 infra 层的实现,因此我们确实是需要每一个实现都抽一个接口出来。...A: 那依赖倒置就是每一个实现都要抽一个接口出来? B: 这个... ” 看来小伙伴 A 不经意间触碰到了 S.O.L.I.D. 的深水区......以开发的角度理解:高层不要直接调用低层,而是调用抽取出来的接口。 那这么说,依赖倒置就是每一个实现都要抽一个接口出来? 为了解释这个问题,我们尝试来提出一个新的问题:为啥要依赖倒置?...现在,我们可以再回到最开始的问题本身: 依赖倒置就是每一个实现都要抽一个接口出来

    45520

    一个实现多个接口的同名方法会报错?

    接口圈真乱 之所以会提出如标题中的问题, 是因为在看ArrayList时,发现接口实现好像有点混乱 如上图所示,其实是两个问题 AbstractList 实现了List接口, 然后ArrayList...这样问题Collection接口中有个size()方法, List接口中也有一个size()方法....如果有某个类同时实现CollectionList接口, 会不会报错 实践出真知 首先,我们能正常使用ArrayList 说明上面两个问题应该是不成问题的.对于问题1....,要不要去重写方法都不会报错但是通用来说, 抽象类的作用就是,要有一个通用的实现,所以一般来说,还是实现方法比较好, 然后再抛一个抽象的具体实现, 如下所示: /** * @author lixiang...**/ public interface GreetCopy { /** * 加油的接口定义 */ String cheer(); } 最开始我们定义的Greet

    1.2K20

    一个 U 盘制作多系统安装盘的需求,YUMI 帮你秒实现

    通常我们一个 U 盘只能制作成一个系统安装盘,比如制作好一个 Windows 10 安装盘,日后想要用到 Linux、WinPE 等安装盘时,只能重新制作一遍,非常浪费时间。...而且现在 U 盘容量都很大,如果只放一个系统,同样就会白白浪费 U 盘剩余的空间。 今天,我们就给大家推荐一个可以让你的 U 盘制作成多系统安装盘的神器 YUMI。...YUMI 几乎支持全系列的 Windows Linux 操作系统。比如 Windows 10、Windows 7、WinPE、Windows To Go 以及 Linux 的各种发行版。...共分为 Legacy UEFI 两个版本,请根据自己 BIOS 实际引导情况选择下载。...如果你想要制作一个集 Windows 10、WinPE Linux 系统于一身、方便用于维护装机的多合一系统安装盘,那么操作如此简单的 YUMI 值得你拥有!

    4.1K40

    面试官:防抖节流的区别是啥?实现一个防抖节流函数

    一、为什么要防抖节流? 我们在开发程序的过程中,可能会频繁的点击某一个事件,或者短时间内请求多次接口,对事件处理函数的频率没有进行限制,从而导致浏览器卡顿或者卡死,导致用户体验非常差。...防抖节流函数就是为了限制函数的执行次数 短时间内不必要多次执行函数,从而提高项目性能。...代码: function debounce (fn, await) { let timer = null // 定义一个定时器的变量 return function () { // 用闭包返回一个函数...代码: function throttle (fn, await) { let timer = null // 定义一个定时器的变量 return function() { // 用闭包返回一个函数...= null; // 清空定时器 }, await) } } } 使用场景: 触底加载更多/滚动加载更多事件 防止重复点击事件 当然也有很多种版本,小编只是实现了个简单的版本

    61940

    n个进程访问一个临界资源,则设置的互斥信号量_多线程同步互斥几种实现方法

    【进程进入临界区的调度原则】 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。 任何时候,处于临界区内的进程不可多于一个。...ThreadFunc2, NULL, 0, NULL); HANDLE TH[2] = { hTH1, hTH2 }; //等待所有内核对象,TRUE等待所有信号量有效再往下执行,FALSE当其中一个信号量有效时有向下运行...用来通知线程一些事件已发生,从而启动后继续任务的开始。 事件对象也可以通过通知操作方式来保持线程的同步,并且可以实现不同进程中的线程同步操作。...由于互斥量在实现时既容易又有效,这使得互斥量在实现用户空间线程包时非常有 用。 为协调共同对一个共享资源的单独访问而设计的。...; 信号量:为控制一个具有有限数量用户资源而设计; 事件:用来通知线程一些事件即将发生,从而启动后继任何的开始。

    56610

    “面试不败计划”: java语言基础面试题(一)

    接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的. 灵活性....定义抽象方法,子类虽然不同的实现,但是定义时一致的 7、接口抽象类的区别 比较 抽象类 接口 默认方法 抽象类可以默认的方法实现 java 8之前,接口中不存在方法的实现....构造器 抽象类中可以构造器, 接口中不能 正常类区别 抽象类不能被实例化 接口则是完全不同的类型 访问修饰符 抽象方法可以public,protecteddefault等修饰 接口默认是public...,不能使用其他修饰符 多继承 一个子类只能存在一个父类 一个子类可以存在多个接口 添加新方法 想抽象类中添加新方法,可以提供默认的实现,因此可以不修改子类现有的代码 如果往接口添加新方法,则子类中需要实现该方法...任何修改都会创建一个新的对象,如 String、Integer及其它包装类。 10、静态变量实例变量的区别?

    50540

    Java面试-面向对象

    抽象类接口什么区别?...抽象类 接口 抽象类可以提供完整的默认代码/或仅提供必须覆盖的详细信息 一个接口根本不能提供任何代码,只能提供签名 对于抽象类,一个类只能扩展一个抽象类 一个类可以实现多个接口 抽象类可以具有非抽象方法...接口的所有方法都是抽象的 抽象类可以具有实例变量 接口不能有实例变量 抽象类可以具有任何可见性:公共,私有,受保护 接口可见性必须是公共的(或无) 如果我们向抽象类添加新方法,则可以选择提供默认实现,...因此所有现有代码都可能正常工作 如果我们向接口添加新方法,则必须跟踪该接口的所有实现并为新方法定义实现 抽象类可以包含构造函数 接口不能包含构造函数 抽象类很快 接口很慢,因为它需要额外的间接才能在实际的类中找到对应的方法...Java中继承哪些不同类型? Java支持四种继承类型: 单继承:在单继承中,一个类继承另一个属性,即将只有一个父类一个子类。

    70920

    2022 最新 JDK8 新特性 面试题

    2022 最新 JDK8 新特性 面试题 1.阐述 Java 7 Java 8 的区别 实话说,两者很多不同。如果你能列出最重要的,应该就足够了。你应该解释 Java 8 中的新功能。...默认方法,支持将新功能添加到类库中的接口,并确保与基于这些接口的旧版本的代码的二进制兼 容性。 重复注解,支持在同一声明或类型上多次应用同一注解类型。...Lambda表达式是作为代码块创造的,因为它没有名称,可以带有或不带有参数结果。 6.Lambda表达式功能接口之间什么联系? 当我们使用Lambda表达式时,这意味着我们正在使用功能接口。...15.功能接口SAM接口之间什么区别? 不,功能接口SAM接口之间没有区别。 SAM接口或单一抽象方法接口是Java SE 8 API中定义的一种功 能接口。...默认方法与抽象方法不同之处在于抽象 方法必须要求实现,但是默认方法则没有这个要求,就是接口可以实现方法,而且不需要实现类去实 现其方法。

    10110

    抽象类接口选择以及Lambda表达式场景下的区别简单探讨

    抽象类接口是面试中常问的基础题。 主要有以下区别: 参数 抽象类 接口 默认的方法实现 它可以默认的方法实现 接口完全是抽象的。...它需要提供接口中所有声明的方法的实现 构造器 抽象类可以构造器 接口不能有构造器 与正常Java类的区别 除了你不能实例化抽象类之外,它普通Java类没有任何区别 接口是完全不同的类型 访问修饰符...抽象方法可以public、protecteddefault这些修饰符 接口方法默认修饰符是public。...多继承 抽象方法可以继承一个实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。...添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口添加方法,那么你必须改变实现接口的类。

    44430

    如何设计优秀的API(三)

    使用抽象类的好处(The Advantages of Abstract Classes) 人们喜欢使用抽象类最主要的原因是它的进化能力 —— 它可以增加一个有缺省实现新方法而不影响已有的客户实现方...结果,新版本的应该很有用的“places”被创建以后,我们将不敢为它添加新方法。...可以给客户请求做日志?可以, EditorFactory是实现这种功能的好地方。 可以提供一些同步访问死锁等等保护?在EditorFactory里实现这些功能是最佳选择。...在最早的CloneableEditorSupport的例子里,可以增加一个新方法(protected类型的方法),该方法在CloneableEditorSupport里一个缺省实现,但是增加一个新方法通常是很危险的...每个上述这样的服务提供者都要显式指定它想实现哪个SPI接口,这比直接在CloneableEditorSupport里添加新方法要显得清晰得多。

    62030

    java8定义函数式接口

    多种组合当涉及到Lambda表达式的组合场景时,你可以使用Java 8中的函数式接口Lambda表达式来实现更复杂的功能。...接口默认方法抽象方法在Java 8中接口支持默认方法的实现,使得接口的修改更加灵活,而不会破坏现有的实现。...Java 8中的接口默认方法抽象类的方法以下区别: 多继承: 接口可以实现多继承,一个类可以实现多个接口,包括具有默认方法的接口。而Java中的类只能单继承一个类,但可以实现多个接口。...设计目的: 接口默认方法的引入是为了向现有接口添加新方法时提供一种向后兼容的方式,而抽象类主要用于代码重用封装共同行为。...而接口默认方法提供了一种在接口添加新方法的方式,而不会破坏现有实现,使得接口更加灵活。

    26900

    基于 el-form 封装一个依赖 json 动态渲染的表单控件 定义接口,统一规范封装各种表单子控件定义属性定义内部model实现多行多列布局调整实现扩展实现数据联动实现组件联动

    使用插槽 使用插槽比较简单灵活,可以在表单控件外部完全控制,适合临时的情况,插槽里可以多个组件。 ?...定义接口,统一规范 表单子控件一个相同的需求,都需要实现属性 v-model 数据交换,因为 element 把 value 给封装成了v-model,所以无法直接绑定组件的属性,必须建立一个内部变量来绑定...定义一个 v-model my-change // 自定义 ref /** * 自定义的ref,实现属性内部变量的数据转换 * @param { reactive } props 组件的属性...实现多行多列布局调整 采用 el-col 实现,通过控制 span 来实现多列,所以理论上最多支持24列,当然这个要看屏幕宽度了。...我们使用 component 动态组件来实现表单子控件的加载。

    1.6K30

    Java抽象类与接口区别

    很多常见的面试题都会出诸如抽象类接口什么区别,什么情况下会使用抽象类什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。...它需要提供接口中所有声明的方法的实现 构造器 抽象类可以构造器 接口不能有构造器 与正常Java类的区别 除了你不能实例化抽象类之外,它普通Java类没有任何区别 接口是完全不同的类型 访问修饰符...多继承 抽象方法可以继承一个实现多个接口 接口只可以继承一个或多个其它接口 速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。...添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口添加方法,那么你必须改变实现接口的类。...什么时候使用抽象类接口 如果你拥有一些方法并且想让它们中的一些默认实现,那么使用抽象类吧。 如果你想实现多重继承,那么你必须使用接口

    58200

    保持 Go 模块兼容

    结果可能是一个新的函数,它具有上下文、网络、地址控制功能。相反,包的作者添加了 ListenConfig 结构体,因为一天可能需要更多的选项。...直接添加接口一个破坏性的变化,但是,我们如何在公开的接口上支持新方法呢? 基本思想是用新方法定义一个接口,然后在使用旧接口的地方,动态检查所提供的类型是旧类型还是新类型。...当您遇到要向现有接口添加方法的情况时,您可以遵循此策略。首先用新方法创建一个接口,或者用新方法标识现有接口。接下来,确定需要支持它的相关函数,为第二个接口键入check,并添加使用它的代码。...与接口不同,使用具体类型可以在将来添加方法而不会破坏用户。该属性允许您的模块在将来更容易扩展。 提示:如果您确实需要使用一个接口,但不想让用户实现它,您可以添加一个未导出的方法。...当您确实需要添加新特性时,请记住以下规则:添加、不更改、不删除。记住异常–接口、函数参数返回值不能以向后兼容的方式添加

    1.2K30
    领券