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

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

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

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

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

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

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

相关·内容

【JAVA-Day59】方法重写:面向对象编程中的重要概念

方法重写要求子类中的方法与父类中被重写的方法具有相同的方法名称、参数列表和返回类型。 方法重写的特点有如下几点,请同学们认真学习: 子类中的重写方法必须与父类中的被重写方法具有相同的方法签名。...使用 super 关键字: 在子类方法中使用 super 关键字调用父类方法,以确保正确地调用父类的方法而不是被重写的方法。...通过遵循这些规则和方法,我们能够更好地解决方法重写中可能出现的优先级问题,确保程序的正确运行和预期行为。 你对于解决方法重写优先级问题有更多的疑问吗?...设计合适的类和方法结构 抽象类和接口: 使用抽象类和接口来定义通用的行为和方法,让不同的类实现这些接口或继承这些抽象类,以实现多态性。...而方法重载是在同一个类中定义了多个方法,它们具有相同的名称但是参数列表不同。 3. 重写方法的访问修饰符有何限制? 解答示例: 重写方法的访问修饰符不能比被重写方法的访问修饰符更严格。

6410
  • web3.js:自定义订阅

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

    12410

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

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

    68740

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

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

    80220

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

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

    90910

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

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

    3361110

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

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

    2.6K20

    Java中的访问控制权限

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

    1.5K90

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

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

    42510

    Java编程最佳实践之多态

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

    87230

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

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

    1.2K20

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

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

    19110

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

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

    49110

    Java-多态

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

    53930

    一文弄懂Python代码规范

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

    38610

    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....JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。...如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。

    2K20

    Effecvtive Java Note

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

    73850

    Effecvtive Java Note

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

    30310
    领券