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

扩展方法设计指南:对于sub和super类,类似的方法名称应该是相同的吗?

扩展方法设计指南是指在开发过程中,为了保证代码的可读性和可维护性,需要遵循一定的设计原则。在这个问题中,我们讨论的是sub类和super类中方法名称的相同性问题。

在面向对象编程中,sub类和super类是继承关系中的子类和父类。当我们在sub类中重写super类的方法时,我们需要保证方法的名称和参数列表与super类中的方法相同。这是因为子类需要继承父类的方法和属性,并且在使用这些方法时,需要保证方法的行为和预期一致。

但是,在某些情况下,我们可能需要在sub类中添加一些新的方法,这些方法与super类中的方法具有相似的功能,但不是重写父类的方法。在这种情况下,我们可以考虑使用不同的方法名称来区分这些方法。

总之,对于sub和super类中的方法名称,我们需要保证重写的方法具有相同的名称和参数列表,以确保方法的行为和预期一致。在添加新方法时,我们可以根据实际情况考虑使用相同或不同的方法名称。

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

相关·内容

web3.js:自定义订阅

你可以扩展Web3Subscription来创建自定义订阅。这样,你就可以订阅由提供者发出自定义事件。 注意 这个指南很可能是针对那些连接到提供额外自定义订阅节点高级用户。...对于普通用户,你可以在支持订阅中找到标准订阅[2]是开箱即用。 重要提示 如果你是为用户提供自定义订阅开发者。我们鼓励你在阅读下面的指南后,开发一个web3.js插件。...然而,你可以在web3.js插件开发者指南[3]中找到如何开发插件方法。即使你不是提供这种自定义订阅开发者,我们也鼓励你为自定义订阅编写一个web3.js插件,并将其发布到npm包注册表。...他们可能会为你仓库做出贡献,帮助你做一些事情,如:添加功能,维护检测错误。 实现订阅 扩展Web3Subscription 要创建一个自定义订阅,首先需要扩展Web3Subscription。...通过扩展Web3Subscription,实现关键方法,并与Web3注册,你可以为提供者可以发出任何自定义事件创建定制订阅。

11010
  • 你真的了解Override,属性能够被重写

    最近想到了一个问题,Java属性能够被Override?首先让我们看一下下面这个继承例子。...答案跟我们预料一样,输出结果如下: Sub Super 不觉得奇怪?我们确实创建了两个Sub对象,但是为什么第二个输出结果却是Super。Override在你心目中是不是一个惊叹号?...在中,与父字段具有相同名称字段为隐藏字段,即使它们类型不同。在子类中,父字段不能通过其简单名称引用。相反,该字段必须通过父访问。...从这个定义中,成员字段不能像方法一样被重写。当子类定义具有相同名称字段时,该子类仅声明一个新字段。超字段是隐藏。它没有被重写,所以它不能被多态访问。 那么,怎样去访问隐藏字段呢?...有两种方法可以供选择: 就像上面的例子c2.s一样,通过申明父去调用 将子类强制转化成父类型再来调用:((Super)c1).s 最后,实际开发中就不要申明隐藏字段了,毕竟这种代码容易引起误解。

    78020

    你真的了解Override,属性能够被重写

    最近想到了一个问题,Java属性能够被Override?首先让我们看一下下面这个继承例子。...答案跟我们预料一样,输出结果如下: Sub Super 不觉得奇怪?我们确实创建了两个Sub对象,但是为什么第二个输出结果却是Super。Override在你心目中是不是一个惊叹号?...在中,与父字段具有相同名称字段为隐藏字段,即使它们类型不同。在子类中,父字段不能通过其简单名称引用。相反,该字段必须通过父访问。...从这个定义中,成员字段不能像方法一样被重写。当子类定义具有相同名称字段时,该子类仅声明一个新字段。超字段是隐藏。它没有被重写,所以它不能被多态访问。 那么,怎样去访问隐藏字段呢?...有两种方法可以供选择: 就像上面的例子c2.s一样,通过申明父去调用 将子类强制转化成父类型再来调用:((Super)c1).s 最后,实际开发中就不要申明隐藏字段了,毕竟这种代码容易引起误解。

    68140

    Python学习笔记整理(十五)编写

    __init__(self,x)  ###还是有用到地方。         ...custom code... I=Sub(1,2) 疑问:子类__init__方法不会继承超?...Sub以其专有化版本取代了Super方法函数。...但是取代时,Sub又回调了Super所导出版本,从而实现了默认行为,换句话说,Sub.mothod只是扩展Super.mothod行为,而不是完全取代他。...特殊方法名称表达式或运算映射关系,是由Python语言预先定义好。 所有运算符重载方法都是选用:如果没有写某个方法,那么定义就不支持该运算。...2、属性名称:对象命名空间 点号属性名称指的是特定对象属性,并且遵守模块规则。就实例对象而言,引用规则增加了继承搜索这个流程。

    89510

    作为后端开发,感受下接口带来魅力!🔥🔥

    在某些情况下,您甚至可以同时使用两者,使用抽象实现接口来执行契约并为相关提供通用基础。请记住考虑每个选项优缺点,为您软件设计做出最佳选择。大家好,我是南哥。...所以正常写法应该是这样。...1.2 子类访问父如下代码,一共有两处编译错误。提示:错误在Child里,能快速找出来?...这种写法叫做方法隐藏,子类中都有一个相同名称参数静态方法时,子类方法将隐藏父方法。...父中不可访问方法,子类编写相同名称参数方法并不算覆盖。父方法都不能访问了,也就没有覆盖这一说法了。。。2.

    290109

    聊聊java中多继承,解决Java8接口default方法多继承冲突问题【享学Java】

    本文目的,主要从两个方面来思考Java单继承这个问题: 为什么Java设计为只能单继承? 怎样曲线实现多继承效果? Java为何设计为只能单继承?...请小伙伴理解这个高级深刻含义,作为程序员对高级、底层等词汇理解应该是更加深刻 对比之下,Java就吸取了教训,本着简单原则,舍弃了C++中多继承,从而也使得了Java更具有安全性健壮性。...对于为何接口为何能多继承解释如下: Java接口是行为性,也就是说接口只是定义某个行为名称 具体实现动作,都在实现本身这里。...这里可以先举个例子:我们知道JavaScript对象是不支持继承,但是它却可以通过扩展原型链(propertype)方式来实现继承类似的效果。...归纳总结:解决接口default方法冲突三步骤: 方法签名相同时,才表示出现了冲突。 方法优先级最高。或者父方法实现优先级大于任何接口默认方法 其实,子接口默认方法优先级更高。

    2.4K20

    Java中访问控制权限

    简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰部分,这些部分对于内部操作时必要,但是它并不属于客户端程序员所需接口一部分。...在编译单元内最多允许有一个public,且该类名称必须与文件名完全相同(包括大小写)。...编译一个.java文件时,在.java文件中每个都会有一个.class输出文件,这个文件名名是相同。...应用场景:单例模式 protected:继承访问权限 新(称之子类或派生)通过继承可以复用一个现有(称之父或基),然后扩展成员、方法。...Son sub = new Son();         sub.print();     } }; 访问权限修饰词注意点 前面各个例子中展示了成员、方法都可以用各种权限修饰词来修饰。

    1.5K90

    数据结构思维 第十一章 `HashMap`

    11.3 权衡 我们已经表明,containsKey,getremove是常数时间,put平均为常数时间。我们应该花一点时间来欣赏它有多么出色。无论哈希表有多大,这些操作性能几乎相同。...如果这个操作是常数时间,n个操作总时间应该是线性,所以结果应该是斜率为1直线。当我运行这个代码时,估计斜率接近1,这与我们分析一致。你应该得到类似的东西。...,我定义一个扩展。...更新removeput有点困难,因为当我们调用超方法,我们不能得知子映射大小是否改变。...空心虚线箭头表示一个实现了一个接口;在这个图中,每个都实现 Map。 UML 图提供了一种简洁方式,来表示大量集合信息。

    41510

    Java编程最佳实践之多态

    文章目录 第九章 多态 向上转型回顾 忘掉对象类型 转机 方法调用绑定 产生正确行为 可扩展性 陷阱:“重写”私有方法 陷阱:属性与静态方法 构造器多态 构造器调用顺序 继承清理 构造器内部多态方法行为...协变返回类型 使用继承设计 替代 vs 扩展 向下转型与运行时类型信息 本章小结 第九章 多态 曾经有人请教我 “ Babbage 先生,如果输入错误数字到机器中,会得出正确结果?”...在这个例子中,Super.field Sub.field 被分配了不同存储空间,因此,Sub 实际上包含了两个称为 field 属性:它自己来自 Super 。...如果你存在清理问题,那么必须用心地为新创建一个 dispose() 方法(这里用是我选择名称,你可以使用更好名称)。...在面向对象编程中,我们持有从基继承而来相同接口使用该接口不同形式:不同版本动态绑定方法。 在本章中,你可以看到,如果不使用数据抽象继承,就不可能理解甚至创建多态例子。

    85130

    软件设计七大原则实战(二)-开闭原则1 开闭原则定义2 开闭原则庐山真面目3 实例

    软件实体包括以下部分 ● 项目或软件产品中按照一定逻辑规则划分模块 ● 抽象方法 一个软件产品只要在生命期内,都会发生变化,既然变化是一个既定事实,我们就应该在设计时尽量适应这些变化...书店售书图 IBook定义了数据三个属性:名称、价格作者 小说NovelBook是一个具体实现,是所有小说书籍总称,BookStore指的是书店,IBook接口 public interface...该方法在项目有明确章程(团队内约束)或优良架构设计时,是一个非常优秀方法,但是该方法还是有缺陷。...我们可以把变化归纳为以下三种类型: ● 逻辑变化 只变化一个逻辑,而不涉及其他模块,比如原有的一个算法是ab+c,现在需要修改为ab*c,可以通过修改原有方法方式来完成,前提条件是所有依赖或关联都按照相同逻辑处理...放弃修改历史想法吧,一个项目的基本路径应该是这样:项目开发、重构、测试、投产、运维,其中重构可以对原有的设计代码进行修改,运维尽量减少对原有代码修改,保持历史代码纯洁性,提高系统稳定性。

    1.2K20

    Python3 | 练气期,面向对象、魔术方法修饰器!

    本章节我们将详细介绍Python面向对象编程,不过在此之前我们先简单了解一下面向对象技术相关概念。 [Class]: 描述具有相同属性方法对象集合, 其中对象是实例。...多态(Polymorphism): 允许不同类对象可以通过相同接口调用方法,从而实现相同操作。例如,在 DogCat中eat()方法,输出可以是不同信息。...具体来说,多态允许不同类对象可以通过相同接口调用方法,从而实现相同操作,提高了代码灵活性扩展性。在 Python 中,多态广泛应用于函数方法设计中,使得代码更加直观、易读维护。...6.重用 在 Python 编程中,重用性(Reusability)指的是通过设计实现,使其可以在不同上下文或项目中反复使用,从而避免代码重复,提升开发效率代码可维护性。...修饰符使用方式类似于函数修饰符,只不过它们应用于上。修饰符是一个很著名设计模式,常见应用场景包括日志记录、方法添加、数据验证等。通过合理使用修饰符,可以使代码更加简洁、可维护扩展

    13210

    Scala 基础 (六):面向对象(下篇)

    单例对象对应称之为伴生,伴生对象名称应该伴生名一致,必须在同一个文件中。 单例对象中属性方法都可以通过伴生对象名(名)直接调用访问。...Scala底层对于伴生对象apply方法进行了优化,调用时可以省略方法名,直接使用单例对象名称+调用apply方法参数 当使用 new 关键字构建对象时,调用其实是构造方法,当直接使用名构建对象时...特质叠加引发两种冲突 第一种:一个Sub)混入两个 trait(TraitA,TraitB)中具有相同具体方法,且两个 trait 之间没有任何关系 如果当前父特质里面出现了相同属性方法...Sub)混入两个 trait(TraitA,TraitB)中具有相同具体方法,且两个 trait 继承自相同 trait(TraitC) Scala采用了特质叠加策略来解决这类冲突。...插入后就可以用this.xxx来访问自身类型中属性方法了。 抽象特质区别? 优先使用特质。一个可以扩展多个特质,但是只能扩展一个抽象

    47910

    一文弄懂Python代码规范

    扩展切片中,两个冒号必须应用相同数量空格。...通常,双前导下划线应仅用于避免与设计为被子类化属性发生名称冲突。 注意:对于使用__names存在一些争议。..._non_public_variable) # 创建子类实例 sub_obj = SubClass() # 访问子类方法实例变量 sub_obj....(然而,请注意,对于已知是变量或参数,特别是方法第一个参数,cls是首选拼写。) 对于简单公共数据属性,最好只公开属性名称,而不是复杂访问器/修改器方法。...如果您旨在被子类化,并且有一些不希望子类使用属性,请考虑使用双下划线开头无下划线结尾名称。 只使用简单名作为混淆名称,因此如果子类选择相同属性名,仍然可能发生名称冲突。

    34410

    Java-多态

    面向对象程序设计语言三大特征是:抽象、继承、多态 封装通过合并特征行为来创建新数据类型。实现隐藏则通过将私有化把接口实现分离。多态作用是消除类型之间耦合关系。...在上面的例子中,为Super.fieldSub.field分配了不同存储空间。这样,Sub实际上包含两个称为field域:它自己和它从Super处得到。...另外,不要对父子类中域赋予相同名字,因为这种做法容易令人混淆 如果某个方法是静态,它行为就不具有多态性:静态方法是与,而并非与单个对象相关联 class StaticSuper{...纯继承域扩展 用纯继承方式创建继承层次结构,也就是说,只有在父中已经建立方法才可以在导出中被覆盖。这种被称作是纯碎is-a(是一种)关系,因为一个接口已经确定了它应该是什么。...这可以在称为“is-like-a”(像一个)关系,因为子类就像是一个父-拥有父相同基本接口,但是子类还可以具有额外方法实现其他特性 但这种方式也具有其缺点,就是子类部分接口是不能被父访问

    52630

    JAVA实习生应届生面试笔试题(一)

    Super sooper = new Super(); Sub sub = new Sub(); System.out.println(sooper.getLenght().toString() + “...B构造器应该是没有参数 C. B构造器应该调用this(). D. B构造器应该调用super(). 12. 下列标识符不合法有( ACD) A.new B....下面哪三个描述是正确? BCE A. 默认构造器初始化方法变量 B. 默认构造器有和它所在相同访问修饰词. C. 默认构造器调用其父无参构造器. D....JSPServlet有哪些相同不同点,他们之间联系是什么? JSP是Servlet技术扩展,本质上是Servlet简易方式,更强调应用外表表达。JSP编译后是”servlet”。...如果在子类中定义某方法与其父相同名称参数,我们说该方法被重写 (Overriding)。子类对象使用这个方法时,将调用子类中定义,对它而言,父定义如同被“屏蔽”了。

    1.7K20

    全面理解Java中继承关系

    子类继承父,表名子类是一种特殊,子类拥有父属性方法,并且子类可以拓展具有父所没有的一些属性方法。子类即是不扩展,也能维持拥有父操作。 ...superthis相同,都不能出现在静态方法中,因为静态方法属于,调用静态方法可能是个,而不是对象,而superthis都是限定对象调用。...但是可以通过父中提供public settergetter方法进行间接访问操作private 属性对于子类可以继承父成员变量成员方法,如果子类中出现了父类同名成员变量成员方法时...重载可以改变返回值类型,它是方法相同,参数列表不同,与返回值类型无关。方法重写:子类中出现方法声明一模一样方法。返回值类型相同(或者是子父,多态),方法参数列表一模一样。...主要发生在子类同名方法之间。方法重载:本类中出现方法相同,参数列表不同方法返回值类型无关,可以改变。主要发生同一多个同名方法之间。

    1.4K00

    Effecvtive Java Note

    对于所有在同一虚拟机中运行代码,只要他们包含相同字符串字面常亮,该对象会被重用。...接口 13.使成员可访问性最小化 要区别设计良好模块设计不好模块,最重要因素在于,这个模块对于外部其他模块而言,是否隐藏其内部数据其他实现细节。...,其中有string、基本数据包装等,不可变得类比可变更易于设计,实现使用,它们不容易出错,且更加安全。...不用扩展现有的,而是在新中增加一个私有域,它引用现有一个实例,这种设计叫做复合。它不依赖于现有实现细节,即使现有添加了新方法,也不会影响新。...test作为测试方法名称开头,这种方法文字拼写错误会导致失败,且没有任何提示,还会给人以测试正确假象。

    73450

    Effecvtive Java Note

    对于所有在同一虚拟机中运行代码,只要他们包含相同字符串字面常亮,该对象会被重用。...接口 13.使成员可访问性最小化 要区别设计良好模块设计不好模块,最重要因素在于,这个模块对于外部其他模块而言,是否隐藏其内部数据其他实现细节。...,其中有string、基本数据包装等,不可变得类比可变更易于设计,实现使用,它们不容易出错,且更加安全。...不用扩展现有的,而是在新中增加一个私有域,它引用现有一个实例,这种设计叫做复合。它不依赖于现有实现细节,即使现有添加了新方法,也不会影响新。...test作为测试方法名称开头,这种方法文字拼写错误会导致失败,且没有任何提示,还会给人以测试正确假象。

    29810
    领券