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

我似乎不太理解super()关键字,它的用法也不是很好

super()是一个关键字,用于调用父类的构造方法。它可以在子类中使用,以便在子类中重写父类的方法时,能够调用父类的构造方法来初始化父类的成员变量。

super()的用法有两种:

  1. 在子类的构造方法中使用super(),可以调用父类的无参构造方法。例如:
代码语言:txt
复制
public class ChildClass extends ParentClass {
    public ChildClass() {
        super(); // 调用父类的无参构造方法
    }
}
  1. 在子类的构造方法中使用super(参数列表),可以调用父类的带参构造方法。例如:
代码语言:txt
复制
public class ChildClass extends ParentClass {
    public ChildClass(int num) {
        super(num); // 调用父类的带参构造方法
    }
}

使用super()的优势是可以在子类中重写父类的方法时,保留父类的初始化逻辑,确保父类的成员变量得到正确的初始化。

super()的应用场景包括但不限于:

  • 在子类中重写父类的方法时,需要调用父类的构造方法来初始化父类的成员变量。
  • 在子类中需要访问父类的成员变量或方法时,可以使用super关键字来引用父类的成员。

腾讯云相关产品中与super()关键字无直接关联,但可以通过腾讯云的云服务器(CVM)来进行云计算相关的开发和部署。腾讯云云服务器是一种弹性计算服务,提供了丰富的计算资源和网络资源,可满足各种规模的应用需求。您可以通过以下链接了解更多关于腾讯云云服务器的信息:

请注意,以上答案仅供参考,具体的技术实现和推荐产品可能因具体情况而异。

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

相关·内容

Kotlin的面向对象编程,深入讨论继承写法的问题

当时提到了一个Kotlin在继承时括号书写的问题,这部分内容比较有疑惑性,不太利于初学者理解。本来我是计划在直播时要讲这个问题的,但由于时间实在不够后来还是跳过了这部分内容。...现在我们可以在这个类中加入字段和函数来丰富它的功能,这里我准备加入name和age字段,以及一个eat函数,因为任何一个人都有名字和年龄,也都需要吃饭。...同时是不是觉得继承时的这对括号问题也并不是那么难理解?...但是,Kotlin在括号这个问题上的复杂度还没有到此为止,因为我们还没涉及到Kotlin构造函数中的另一个组成部分,次构造函数。 其实次构造函数我本来是不太想讲的,因为我们几乎上用不到它。...另外由于没有主构造函数,次构造函数只能直接调用父类的构造函数,上述代码也是将this关键字换成了super关键字,这部分就很好理解了,因为和Java比较像,我也就不再多说了。

85230

作为一名JS开发人员,是什么使我夜不能寐

这些话让我感到困扰,因为它们都不是真的,它们证明了 JavaScript 的“everything for everyone”的语言设计方法的后果:它削弱了程序员对语言的理解。...在我个人看来,它有点糟糕 —— 它打破了 JavaScript 中 class 声明的习惯用法,并且它不像你期望的那样来自 Java。...这比原型或类的版本更简洁。它可以更有效地实现其属性的封装。此外,它在某些情况下具有较低的内存和性能影响(乍一看似乎不太可能,但 JIT 编译器正悄悄地在幕后做了减少重复和推断类型的工作)。...关于 JavaScript 的哪些部分是合理的,我希望已经说服了你,class 不是其中之一。如果做不到这一点,希望你能理解 JavaScript 中的继承可能是混乱且令人困惑的。...而且 class 既不去修复它,也不会让你不得不去理解原型。如果你了解到面向对象的设计模式在没有类或 ES6 继承的情况下正常工作的提示,则可获得额外的好处。 我并没有告诉你要完全避免 class。

1K20
  • kotlin和java语言_我希望Java可以从Kotlin语言中窃取的10个功能

    该jOOλ Seq包装类型是不是真的很重要,因为它伪装成一个Stream的类固醇。...但是Ceylon具有Java 42之前无法提供的大量功能,我也不希望有独角兽。 我希望有安全调用运算符(还有Elvis运算符,两者稍有不同),也可以用Java实现。...我只是觉得if-else更容易阅读,而且我不明白为什么那应该是一个陈述,而不是一个表达。Heck,在Kotlin中,甚至try是一个表达,而不是一个陈述。...许多其他语言也知道这一点,例如C#的IEnumerable :     公共接口IEnumerable :IEnumerable     这里的关键字out表示通用类型T是由IEnumerable...在C#,Scala,Ceylon,Kotlin和许多其他语言中,我们可以在类型声明中声明它,而不是在其用法上声明(尽管许多语言都允许这两种)。

    1.2K00

    伙计们,Go 并没有那么简单

    这对我来说似乎很不幸,因为在我看来,Go 是一个“极其简单的语言”: 不应该作为考虑使用 Go 的主要原因 从他们的关注点中找到其他更有利的推荐理由 甚至不是真的(不是真的简单) 在这篇文章中,我想围绕...Go 没有这些关键字,但它仍然有 private 和 public,它只是使用字母大小写而不是关键字。...我真的不希望任何人试图选择这个“简单”,因为这个语法除了简单,什么也不是。 4....多个返回值的特征不能使事情变得简单,这意味着不能返回一个错误或成功的结果,你可以返回所有值或者都不返回(CS 术语,你可以说这个问题是一个产品类型而不是总和式的用法)。...不要误解我的意思,我理解它在 Go 中存在的原因以及它的用处,事实上,其他语言也有类似的处理。我只是提出来作为反对简单性的一个论据。

    80160

    浅谈java中static关键字修饰的几种用法

    不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。 ...static,统称变量 属性和方法合称为成员  所以这里我再次区分一下, (1),static修饰变量时的用法: static修饰的变量叫做类变量 //类变量不再属于某一个对象,它属于全类公有;  static...,每一种使用都有详细标注,相信把下面这个程序看懂就能理解static的具体用法了!     ...("Sub");         }     } 总结: static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:  用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享...;用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;静态导包用法,将类的方法直接导入到当前类中

    38600

    我妹说,只用讲 this,不用讲 super

    大家的焦点似乎都是你的颜值,完全忽略了我的盛世美颜啊!” “哥,你想啥呢,那是因为你文章写得好,不然谁认识我是谁啊!有你这样的哥哥,我还是挺自豪的。”三妹郑重其事地说,“话说今天咱学啥呢?”...“this 关键字有很多种用法,其中最常用的一个是,它可以作为引用变量,指向当前对象。”我面带着朴实无华的微笑继续说,“除此之外, this 关键字还可以完成以下工作。”...“this 关键字也可以作为参数在构造方法中传递,它指向的是当前类的对象。当我们需要在多个类中使用一个对象的时候,这非常有用。” “来看一下输出结果。”...08、super 关键字 “super 关键字的用法主要有三种。” 指向父类对象; 调用父类的方法; super() 可以调用父类的构造方法。 “其实和 this 有些相似,只不过用意不大相同。”...我端起水瓶,咕咚咕咚又喝了几大口,好渴。“每当创建一个子类对象的时候,也会隐式的创建父类对象,由 super 关键字引用。”

    35210

    C#语言和JAVA、C++的对比学习

    对于C++程序员来说,指针类型简直是最常用的东西。C#也能用指针,不过就要加上个unsafe关键字,说到底它认为直接用指针不安全。从这里看确实足够代表C++的外表了。...virtual,这对于从interface派生的两个层级的子类来说,是比较麻烦的,在这些方法上要用不同的关键字,这点看起来规定的很细致,似乎对于代码规范很好,但是有点过于繁琐了。...C#里面的关键字new和C++和JAVA都有点不同,是有一些特殊的用法的。...这种风格后来被C11和JAVA新版本争相使用,说明还是一个很好的设计。不过个人觉得不适合大规模使用,因为代码的可读性似乎有影响。...虽然说没有这些东西程序一样能写,库也会更简洁,但是这些工具代码,能让整个C#生态有一些基础的代码标准。这些标准用法能大大降低代码的阅读理解的难度,可谓造福长久。

    1.8K40

    整理下java中stringBuilder和stringBuffer两个类的区别

    其实我一直用StringBuilder这个类,因为可以简写为sb的变量在程序里很爽,可是后来师兄说web程序特别是高并发的程序中不要用stringbuilder,因为简单说,stringBuilder不是线程安全的...来来来,我们先复习下syncronized的用法,有篇博客写的挺好的,给个链接 http://leo-faith.iteye.com/blog/177779    1、synchronized关键字的作用域有二种...用法是: synchronized(this){/*区块*/},它的作用域是当前对象;   3、synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是...  操作字符串对象引用相加类型使用的时间为: 6 毫秒     操作字符串相加使用的时间为: 1 毫秒    把循环次数调的很大,试了用下jconsle来监视内存GC,第一次使用,不太明白,有个博客写的很好的...的super的方法。

    38160

    Java关键字 `super` 的骚操作

    异常处理 结语 欢迎来到Java学习路线专栏~Java关键字 super 的骚操作 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒 ✨博客主页:IT·陈寒的博客 该系列文章专栏:Java学习路线 其他专栏...虽然 super 的主要目的是调用父类的方法和属性,但它也有一些不太为人所知的骚操作,本文将介绍这些特殊用法。 1. 调用父类构造方法 super 最常见的用途是在子类构造方法中调用父类的构造方法。...通过这种方式,可以实现多态,调用适当的子类方法。 4. 在接口中使用 super super 也可以在接口中使用,用于解决多重继承冲突。...这些用法使得 super 成为 Java 面向对象编程中非常有用的工具之一。通过灵活运用 super,你可以更好地掌控和组织你的代码。...希望本文对你加深对 Java 中 super 关键字的理解有所帮助。

    18510

    「万字图文」史上最姨母级Java继承详解

    this和super关键字 this和super关键字是继承中非常重要的知识点,分别表示当前对象的引用和父类对象的引用,两者有很大相似又有一些区别。 this表示当前对象,是指向自己的引用。...无法以返回值类型作为重载函数的区分标准 重载可以通常理解为完成同一个事情的方法名相同,但是参数列表不同其他条件也可能不同。...static修饰符的规则很多,这里仅仅介绍和Java继承相关用法的规则: 构造方法不允许声明为 static 的。 静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super。...但父类引用变量实际引用必须是子类对象才能成功转型,这里也用一张图就能很好表示向上转型的逻辑: ?...这个也不难理解,静态变量也称类变量,可以看成一个全局变量,静态成员变量和静态代码块在类加载的时候就初始化,而非静态变量和代码块在对象创建的时候初始化。所以静态快于非静态初始化。

    42020

    使用HttpClient的优解

    也正是在看源码的过程当中,有一个比较明显的用法细节引起了我的注意,我发现一位同事在请求远程Web Api时,虽然使用了 HttpClient 类,但是在用法上似乎有些欠考虑。...),翻看一些国内外的文章都能看到对在 using 关键字中使用 HttpClient 的吐槽。...事实是不是真的这样呢,其实只要做一个小实验就可以了。...其实这很好理解,HttpClient内部维持一个专有的连接池,每个HttpClient实例的请求相互隔绝,加快速度的原因是因为重用了套接字,去除了套接字重新建立连接的过程。...HttpClientHelper 这是在编程规范中推荐的一种的做法,通过使用静态构造函数能够精确保证Client变量能够在它第一次被使用前被实例化。

    2K80

    Python面试中常问的高级用法,如何动态创建一个类?

    元类是Python当中的高级用法,如果你之前从来没见过这个术语或者是没听说过这个概念,这是非常正常的,因为一方面它的使用频率不高,另外一方面就是它相对不太容易理解。...以至于很多Python开发者都理解得不是很深入,导致了市面上相关的资料也并不太多。我也是读了一些大牛的代码才开启了这扇新世界的大门。...所以type就是Python当中内置的元类,我们也可以自己创建我们需要的元类。通过元类,我们创建的对象也是一个类,而不是一个实例。 动态创建类 理解了type是一切类基础之后,再来看动态类就简单了。...总结 我们固然可以通过type来创建动态创建类,但是从上面的使用过程也应该看得出来,这样使用起来并不太方便,并且很多进阶的功能很难实现。...当然,元类是一个非常高级的用法,以至于Python的创始人说99%的Python程序员并不需要用到它。所以如果你觉得理解起来非常费劲的话也没有关系,知道这么个概念就可以了。

    1.4K30

    Java知识面试题复习(二)Java基础语法

    this关键字的用法 this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。...关键字的用法 super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。...super也有三种用法: 1.普通的直接引用 与this类似,super相当于是指向当前对象的父类的引用,这样就可以用super.xxx来引用父类的成员。...this与super的区别 super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名...,所有的类对象共享的,不像成员变量是自个的【自个指的是这个类的单个实例对象】…我觉得我已经讲的很通俗了,你明白了咩?

    32920

    super关键字和继承中的潜规则

    java零基础入门-面向对象篇(九) 继承的规则 关于继承的规矩很多,再加上初学者一般不会有太深的理解,所以学起来磕磕绊绊,绕来绕去,就差死记硬背了,我一直认为死记硬背的学习方法简直就是个灾难。...只要我们稍微理解一下概念,就不会将重载和重写的概念混淆,所以这个问题的出场率确实很莫名其妙。 super 关键字 当子类对父类的方法进行重写以后,父类的方法就不可见了,也可以说是被覆盖了。...其实我们是可以在子类中通过super关键字来调用父类被覆盖的方法的。 super关键字调用 super和this 看了上面的例子,是不是联想到我们曾经学过的this,他们确实有点像,但是也有区别。...比如我们普通玩家打怪的时候,一不小心怪没打死,自己挂了。这时候会有系统惩罚的,比如掉经验掉金币,就算用户是VIP,我也不希望他们改变这个机制,为什么?因为你是VIP你打怪还能死,说明啥?...要么太傻,要么是冲的钱还不够!所以这个死亡掉经验掉金币的方法,不论是普通玩家不论是什么等级的VIP,都不能改变。如何实现? final 关键字,有一个用法就是阻止重写。

    51230

    接触 Python 后的一点感受记录

    但是如今我显然不太会做一样的事情,我现在会拿着我那些熟悉的编程语言来比较,不同的特性上面,Python 是怎样的,是先进还是落后,适合解决什么问题,在哪些领域可以大行其道,但在遇到哪些问题的时候事倍功半...单纯就语言层面上,Python 和 Bash 比起来它的代码组织性更好,和 Perl 比起来则没有那么多啰嗦的语法,代码更容易理解。...**则是关键字参数,和*被解析成 [] 不同的是,**被解析成 {},这个我在别的语言里面似乎没有见到类似的。...如果不是说方法定义,而是说方法调用,那么它似乎和 JavaScript ECMA 6 中的…类似,可以传递若干键值对(命名参数)。...,代码的单一职责这一要求维护得明显更好,在做某些修改的时候,需要评估的调查范围就小,代码修改也更清楚和易于评审者理解,修改者心里也更有谱。

    28610

    第五十四期:认知束缚和对diff算法的一些理解

    作为一个单纯的前端程序员的眼光来看,其实很多程前端的序员对这些行业当下具体的形式并不关心,对行业未来的走向似乎也不太关心,我们关心的大部分是产品经理交给我的需求能否完成。或者对某些新技术的所谓的追求。...一个新的前端技术出现,我们往往热衷于去学一些新技术的用法,尝试写一些demo。 这些都是很好的方面。...我以前也很少去思考这些问题,因为我遇到的人传达给我的一个观点是:做技术的人,只要技术扎实,到哪里都会有人要。...我承认我以前其实根本不理解什么是diff算法,虽然也看过很多别人写的文章。但只是看不去思考的话,文章始终是别人的文章,自己不理解,别人问你的时候,你只能照本宣科,不会有自己的观点。...当然我这里也不会做特别详细的解读,因为写这些内容的文章太多了。 其实想要真正的理解diff算法,你只需要知道它的目的是什么就行了。 它的目的是什么呢?

    34340

    Python 为什么没有 void 关键字?

    void 是编程语言中最常见的关键字之一,从字面上理解,它是“空的、空集、空白”的意思,最常用于表示函数的一种返回值类型。...对于第一个问题,我们以 C/C++ 为例,先看看 void 的两种使用场景(PS:此处只考虑函数的用法,不考虑指针的用法,因为 Python 没有指针): 当 void 用在函数的参数位置时,它表示该函数不需要传参...同时,更主要的是,它还起到了占位符的作用,表明一个函数的类型是已知的,这对代码可读性和编译都有所帮助。 void 作为函数的空返回值类型,这种用法在 C++/Java 中也被继承了。...所用的方法,即令解释器隐式地返回一个 None 对象,也就是令函数默认得到一个 NoneType 类型,再用于类型检查(PS:Javascript 也类似,只不过它默认返回的是 undefined,它不是一个对象...总体而言,Python 似乎认为 void 空类型不是那么有存在的必要,似乎 NoneType 类型就足够了,而当缺少返回值时,让解释器统一注入是极为方便的,因此才出现了我们看到的现状。

    91930

    关于 Java 你不知道的 10 件事

    这很好理解。 合成的桥方法实际是由编译器生成的,因为 Parent.x() 签名中的返回类型在实际调用的时候正好是 Object。在没有这种桥方法的情况下引入泛型将无法在二进制下兼容。...即使你的大脑解析器不能立刻理解上面方法的返回类型,但其实他们都是一样的!...看起来很神秘,其实并不难理解。 或者换句话说: 当我做最近一次提交的时候是在我4周的假期之前。 对你来说,上面的内容在你的实际使用中找到了吧。 4...., 仅仅是为了以防万一…… 但这不是最令人兴奋的部分。...如果你对 Java 这个用法感到奇怪之余也感兴趣,就去看看 Ross Tate 写的 “在 Java 的类型系统中使用通配符” (与 Alan Leung 和 Sorin Lerner 合著),我们也在讨论泛型多态中的相关子类多态性

    85160

    Python 为什么没有 void 关键字?

    (给机器学习算法与Python学习加星标,提升AI技能) void 是编程语言中最常见的关键字之一,从字面上理解,它是“空的、空集、空白”的意思,最常用于表示函数的一种返回值类型。...同时,更主要的是,它还起到了占位符的作用,表明一个函数的类型是已知的,这对代码可读性和编译都有所帮助。 void 作为函数的空返回值类型,这种用法在 C++/Java 中也被继承了。...至于返回值类型的用法,在我们定义出一个函数时,例如最简单的def func():pass ,为了让它的调用结果func() 是一个合法的对象,那它必须具有一个有效的类型(type)。...所用的方法,即令解释器隐式地返回一个 None 对象,也就是令函数默认得到一个 NoneType 类型,再用于类型检查(PS:Javascript 也类似,只不过它默认返回的是 undefined,它不是一个对象...总体而言,Python 似乎认为 void 空类型不是那么有存在的必要,似乎 NoneType 类型就足够了,而当缺少返回值时,让解释器统一注入是极为方便的,因此才出现了我们看到的现状。

    82110

    关于Java你不知道的10件事

    因此我想推荐 Lukas Eder 在 jooq.org 发表的原创作品给大家。 你是从很早开始就一直使用 Java 吗?那你还记得它的过去吗?...这很好理解。 合成的桥方法实际是由编译器生成的,因为 Parent.x() 签名中的返回类型在实际调用的时候正好是 Object。在没有这种桥方法的情况下引入泛型将无法在二进制下兼容。...即使你的大脑解析器不能立刻理解上面方法的返回类型,但其实他们都是一样的!...看起来很神秘,其实并不难理解。 或者换句话说: 当我做最近一次提交的时候是在我4周的假期之前。 ? 对你来说,上面的内容在你的实际使用中找到了吧。...如果你对 Java 这个用法感到奇怪之余也感兴趣,就去看看 Ross Tate 写的 “在 Java 的类型系统中使用通配符” (与 Alan Leung 和 Sorin Lerner 合著),我们也在讨论泛型多态中的相关子类多态性

    853110
    领券