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

这可能是一个愚蠢的问题,但我想把它弄清楚。在java中,我们能不能把“super”作为对象而不是关键字呢?

在Java中,"super"是一个关键字,用于引用父类的成员变量、成员方法和构造方法。它不能被用作对象,因为它是Java语言的保留关键字之一,具有特殊的语法含义。

"super"关键字的主要作用是在子类中访问父类的成员,通过使用"super"关键字,可以调用父类的构造方法、访问父类的成员变量和调用父类的成员方法。这样可以实现代码的重用和继承的特性。

在Java中,如果要引用父类的成员变量或方法,可以使用"super"关键字,例如:

代码语言:txt
复制
public class Parent {
    protected int num;

    public Parent(int num) {
        this.num = num;
    }

    public void display() {
        System.out.println("Parent class: " + num);
    }
}

public class Child extends Parent {
    private int num;

    public Child(int num1, int num2) {
        super(num1); // 调用父类的构造方法
        this.num = num2;
    }

    public void display() {
        super.display(); // 调用父类的成员方法
        System.out.println("Child class: " + num);
    }
}

public class Main {
    public static void main(String[] args) {
        Child child = new Child(10, 20);
        child.display();
    }
}

以上代码中,"super"关键字被用于调用父类的构造方法和成员方法,实现了对父类成员的访问。

总结起来,"super"关键字在Java中不能作为对象使用,它只能用于访问父类的成员。

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

相关·内容

万能 Java

它已经在那里了,这是大家都知道的。我们仍旧坚持使用 JavaScript。在整个过程中,我不得不写各种各样的的代码让 Java 和 JavaScript 相互沟通。...在我的一个私人项目中,也需要类似的东西,我再次建议使用 Python。但我的搭档 Dan Collens 则认为应该使用 Java,因为它已经在那里了,我们都了解它,而且它够快。...还有一个重要原因:很可能,这个快速实现的黑客代码将会成长为一个重要的工具,我没有时间去重写它,因而每次使用它我都要忍受由于性能不佳和难于维护而导致的惩罚。...错误的工具呀!还是使用 Java 吧。如果你觉得在 shell 上运行命令显得很愚蠢,编写一个工具函数就可以解决这个问题。...我现在可以充满自信地把对 Java 的投资作为我未来职业和个人技术的一个重要组成部分。 最后还有一个在众多编译型静态类型语言中,我为什么特别选择 Java 的问题。

92730

java最困扰你的那些事?又将如何解决?

没有,没有,还是没有 没有无符号的×××。 没有操作符重载。 没有对象属性。 没有代理 (尽管我听说 Java 8 中可能引入了代理或类似机制,但我还没细看)。...事实上,在Java 中你根本不能在泛型中实例化一个类,除非你把这个类作为参数来声明一个泛型。 你很难给一个类加上结构函数并让它销毁这个类。RAII(一种资源管理模式,见 C++)却一直非常有用。...这些是我最先想到的,不过觉得应该还有更多。认真地说,使用回调函数一直是一个大问题,因为它太麻烦了。不过Java 8 中解决了这个问题,我还是很开心的 =) 愚蠢的默认值 默认的可见性。...如果没有给变量或方法一个修饰符,那么这个方法应该是私有的,而不是包内可见。 默认的修改能力。最终类型(在所有情况下)应该是默认的,并用“var”作为修饰符。...我知道我要说的可能不是一个广泛认可的问题,但是我真的同意checked exception(应被检查的异常)很烦人。这些异常让代码变得面目全非还让重构变得不可能。

78250
  • 每天一道 python 面试题 - Python中的元类(metaclass) 详细版本

    想象一个愚蠢的示例,在该示例中,您决定模块中的所有类的属性都应大写。有多种方法可以执行此操作,但是一种方法是__metaclass__在模块级别进行设置。...幸运的是,__metaclass__实际上可以是任何可调用的,它不必是正式的类(我知道,名称中带有“ class”的东西不必是类,请弄清楚……但这很有用)。 因此,我们将从使用函数的简单示例开始。...它没有什么特别的:__new__始终将其定义的类作为第一个参数。就像您有self将实例作为第一个参数接收的普通方法一样,还是为类方法定义了类。 但这不是适当的OOP。...我们正在type直接致电,而不是覆盖或致电父母的__new__。...type实际上是它自己的元类。这不是您可以在纯Python中复制的东西,而是通过在实现级别上作弊来完成的。 其次,元类很复杂。您可能不希望将它们用于非常简单的类更改。

    43110

    每天一道 python 面试题 - Python中的元类(metaclass) 详细版本

    想象一个愚蠢的示例,在该示例中,您决定模块中的所有类的属性都应大写。有多种方法可以执行此操作,但是一种方法是metaclass在模块级别进行设置。...幸运的是,metaclass实际上可以是任何可调用的,它不必是正式的类(我知道,名称中带有“ class”的东西不必是类,请弄清楚……但这很有用)。 因此,我们将从使用函数的简单示例开始。...它没有什么特别的:new始终将其定义的类作为第一个参数。就像您有self将实例作为第一个参数接收的普通方法一样,还是为类方法定义了类。 但这不是适当的OOP。...我们正在type直接致电,而不是覆盖或致电父母的new。...type实际上是它自己的元类。这不是您可以在纯Python中复制的东西,而是通过在实现级别上作弊来完成的。 其次,元类很复杂。您可能不希望将它们用于非常简单的类更改。

    61100

    Linux内核管理风格

    顺便说一句,在谈到“核心管理者”时,主要是技术负责人,而不是在公司内部进行传 统管理的人。如果你签署了采购订单或者对你的团队的预算有任何了解,你几乎肯定 不是一个核心管理者。...这些建议可能适用于您,也可能不适用于您。 首先,我建议你购买“高效人的七个习惯”,而不是阅读它。烧了它,这是一个伟大的 象征性姿态。...相信我,它是有效的。如果不清楚哪种方法更好,他们最终会弄清楚的。 最终的答案可能是两个团队都会因为这种情况而感到沮丧,以至于他们放弃了。...这听起来像是一个失败,但这通常是一个迹象,表明两个项目都有问题,而参与其中 的人不能做决定的原因是他们都是错误的。你最终会闻到玫瑰的味道,你避免了另一 个你本可以搞砸的决定。...不仅是为 了将来可以避免,而且为了让他们知道他们欠你一个人情。而且,也许更重要的是, 他们也可能是能够解决问题的人。因为,让我们面对现实吧,肯定不是你。 承担责任也是你首先成为管理者的原因。

    79660

    Java 最困扰你的那些事

    没有,没有,还是没有 没有无符号的整形。 没有操作符重载。 没有对象属性。 没有代理 (尽管我听说 Java 8 中可能引入了代理或类似机制,但我还没细看)。...事实上,在Java 中你根本不能在泛型中实例化一个类,除非你把这个类作为参数来声明一个泛型。 你很难给一个类加上结构函数并让它销毁这个类。RAII(一种资源管理模式,见 C++)却一直非常有用。...这些是我最先想到的,不过觉得应该还有更多。认真地说,使用回调函数一直是一个大问题,因为它太麻烦了。不过Java 8 中解决了这个问题,我还是很开心的 =) 愚蠢的默认值 默认的可见性。...如果没有给变量或方法一个修饰符,那么这个方法应该是私有的,而不是包内可见。 默认的修改能力。最终类型(在所有情况下)应该是默认的,并用“var”作为修饰符。...我知道我要说的可能不是一个广泛认可的问题,但是我真的同意checked exception(应被检查的异常)很烦人。这些异常让代码变得面目全非还让重构变得不可能。

    86580

    写代码太难 送快递也不错啊

    java零基础入门-面向对象篇(四) 类和对象 (中) 要把类和对象说清楚,一定要弄清楚他们的联系,他们由什么组成,每个组成部分有什么用,怎么用。...这里有个很关键的东西,叫this,我们上篇文章也说过,但是他的存在经常让初学者云里雾里,好像懂了,会用了,心里却又没底,特别是后面还有个关键字叫 super ,这两兄弟经常存在于各种面试题里面,搅的人心神不宁...我们继续看 指向 (调用该方法的) 对象 这句话是什么意思。this指向了一个对象,那么它指向的是哪个对象呢?调用这个方法的对象,哪个对象在调用方法,this就指向哪个对象。...对于构造器里面的this,是指正在被创建的那个对象。 ? 构造器里的this this 关键字,其实用的很少,因为要用它的地方都可以省略它...而构造器里面其实一般使用默认无参构造器就够了。...我们上面说了,调用成员变量和方法的时候,会有一个this在前面,不管你写或不写,它都在那。但是还有一种成员变量和方法,它前面不是隐藏了this,而是真的没有this,他们就是静态变量和静态方法。

    28820

    MyBatis源码解读(1)——SqlSessionFactory

    ,但我想把这四大对象放到我们源码中一步一步来解读。...对MyBatis的使用我们在最开始都已经知道可以通过xml配置文件的方式,也可以通过Java代码创建Configuration对象的方式。...但我想要阅读的第一个源码并不是Configuration类,我们暂且知道它会贯穿整个MyBatis的生命周期,它是存放一些配置所在的地方即可。...Configuration应该是存在于MyBatis的整个生命周期那么意味着它应该是有且仅有一个实例的,而final关键字修饰的变量字段就代表它是不可变对象(《“不可变的对象”与“不可变的对象引用”》)...首先,MyBatis认为配置文件之所以是配置文件那么就以为着它只有一种配置(这个说法并不是很全面,因为我们已经见到了那么多的构造方法就说明在一个应用程序中可以通过不同的场景配置选用不同的配置,事实也如此

    76270

    “睡车间”、削减一切,马斯克为SpaceX定制的文化,不能照搬到互联网公司

    但如果我们面对的是个蠢问题,又该如何?还是以玻璃纤维板为例,我们首先该问的是,“这块板子真有必要吗?能不能改用其他材料?”这才是问题的核心。所以不妨破除对问题本身的敬畏心态,真正探究背后的答案。...正如前 Twitter 高级项目经理 Peter Clowes 解释的那样,他辞职是因为他认为“作为 JIRA 看板中的最后一个人”没有任何好处。...太空旅行可能相当复杂,但并不是特别复杂。人们仍然可以仅从蓝图和飞行计划中弄清楚火箭的工作原理、它的作用以及它的去向。自阿波罗以来,科学家们已经开始对系统进行分类和总结。...每一行都是一个方向的修正,使社会朝着一个或另一个方向转变,但我们并不清楚我们应该去哪里或如何到达那里。在将 Twitter 视为火箭时,他无意中改变了我们所有人的路线。...在‘驳船上爆炸’不是用来学习的机会。很明显,工程决策会影响整个社会,但我们没有预先衡量这些影响的框架。” 毕竟,Twitter 不是火箭科学——它更难,SpaceX 的文化也不适用于社交媒体公司。

    57810

    Python中的__init__()方法整理中(两种解释)

    因为有很多种方式为__init__()提供参数值,对于对象创建有大量的用例,我们可以看看其中的几个。我们想尽可能的弄清楚,因此我们需要定义一个初始化来正确的描述问题区域。...小部分的静态对象可能是实现策略模式或状态模式的一部分。 在某些情况下,我们会有一个在初始化或配置文件中创建的常量对象池,或者我们可以基于命令行参数创建常量对象。...在诸如Java这样的语言中,工厂类层次结构是必须的,因为该语言不支持独立的函数。 在Python中,类不是必须的。只有当相关的工厂非常复杂的时候才会显现出优势。...这并没有实质性改变__init__()在Card类层次结构中的运作方式。然而,它确实改变了我们应用程序创建对象的方式。...我们可以尝试创建一个接口,但这并不是一件简单的事情,对于Hand对象它只是在语法上发生了变化。接口仍然会导致多种方法计算。

    6.5K50

    详解 Java 泛型

    这其实就是我们常听到的泛型擦除:泛型类在还没被使用到时中并不知道字段的实际的类型是什么,于是用了一个所有类的基类:java.lang.Object 类型的引用来承接实际值。...作为泛型实际参数)。 此时会发生什么情况呢?我们不能再向 list1 这个容器中 add 任何元素了!为什么呢。...所以这个时候容器只能获取第一个元素,并将其作为 Object 类型(最保险的类型)的对象返回。 super super 和 extends 这两个关键字在泛型中有什么作用呢?...我们并不知道,有可能是 A 类型本身,有可能是 B,也可能是 C,既然用来接收对象的引用类型都不确定,又怎么往里面添加对象呢? 到这里可能小伙伴要问了:在 super 小节,我们定义的引用类型是 ?...问题点在于这里使用 extends 时,我们规定的只是上界,不是下界,这样的话可能的引用类型就会有无限多种(一个非 final 的类可以有无数个子类)。

    93420

    Python中的__init__()方法整理中(两种解释)

    因为有很多种方式为__init__()提供参数值,对于对象创建有大量的用例,我们可以看看其中的几个。我们想尽可能的弄清楚,因此我们需要定义一个初始化来正确的描述问题区域。...小部分的静态对象可能是实现策略模式或状态模式的一部分。 在某些情况下,我们会有一个在初始化或配置文件中创建的常量对象池,或者我们可以基于命令行参数创建常量对象。...在诸如Java这样的语言中,工厂类层次结构是必须的,因为该语言不支持独立的函数。 在Python中,类不是必须的。只有当相关的工厂非常复杂的时候才会显现出优势。...这并没有实质性改变__init__()在Card类层次结构中的运作方式。然而,它确实改变了我们应用程序创建对象的方式。...我们可以尝试创建一个接口,但这并不是一件简单的事情,对于Hand对象它只是在语法上发生了变化。接口仍然会导致多种方法计算。

    2.7K60

    kotlin入门之泛型

    泛型 将具体的类型泛化,编码的时候用符号来值代类型,在使用时再确定他的类型。 因为泛型的存在,我们可以省去强制类型转化。 泛型是跟类型相关的,那么是不是也能使用与类型的多态呢?...Java也已经想到了,所以为我们提供了泛型通配符 ? exntends与? super 来解决这个问题 正确认识Java泛型中? exntends与? super ?...表示未知类型,编译器是不确定它的类型的。 虽然不知道它的具体类型,不过在 Java 里任何对象都是 Object 的子类,所以这里能把它赋值给 Object。...说完了Java的泛型之后,我们在回头看一下kotlin中的泛型。 kotlin 中的out和in kotlin和java泛型一样,kotlin中的泛型本身也是不可变的。...-使用关键字out来支持协变,等同于Java中的上界通配符? extends -使用关键字in来支持逆变,等同于Java中的上界通配符?

    1.2K20

    (16) 继承的细节

    这个时候,它的任何子类都必须在构造方法中通过super(...)调用Base的带参数构造方法,如下所示,否则,Java会提示编译错误。...一个父类的变量,能不能转换为一个子类的变量,取决于这个父类变量的动态类型(即引用的对象类型)是不是这个子类或这个子类的子类。...给定一个父类的变量,能不能知道它到底是不是某个子类的对象,从而安全的进行类型转换呢?...另外,在Java中,protected还表示可被同一个包中的其他类访问,不管其他类是不是该类的子类,后续章节我们再讨论包。...这种思路和设计在设计模式中被称之为模板方法,action方法就是一个模板方法,它定义了实现的模板,而具体实现则由子类提供。模板方法在很多框架中有广泛的应用,这是使用protected的一个常用场景。

    69890

    面试系列之-JAVA泛型剖析(JAVA基础)

    那如何可以避免上述异常的出现?即我们希望当我们向集合中添加了不符合类型要求的对象时,编译器能直接给我们报错,而不是在程序运行后才产生异常。这个时候便可以使用泛型了。...明明我们在 中传入了两种不同的数据类型,按照上文所说的,它们的类型参数 T 不是应该被替换成我们传入的数据类型了吗,那为什么它们的类信息还是相同呢?...这里可能有小伙伴就产生了疑问: 不是说泛型信息在编译的时候就会被擦除掉吗?那既然泛型信息被擦除了,如何保证我们在集合中只添加指定的数据类型的对象呢?...泛型的继承 在介绍泛型通配符之前,先提出一个问题,在 Java 的多态中,我们知道可以将一个子类对象赋值给其父类的引用,这也叫向上转型。...super T> 之间有什么区别 ? 这和上一题有联系,有时面试官会用这个问题来评估你对泛型的理解,而不是直接问你什么是限定通配符和非限定通配符。

    39720

    java的serializable接口_javacloneable接口

    Cloneable接口 clone:它允许在堆中克隆出一块和原对象一样的对象,并将这个对象的地址赋予新的引用。...要说明的有两点: 一是拷贝对象返回的是一个新对象,而不是一个引用; 二是拷贝对象与用 new操作符返回的新对象的区别就是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息。...这也解释了为 什么要用Object中clone()方法而不是先new一个对象,然后把原始对象中的信息赋到新对象中,虽然这也实现了clone功能,但效率较低。...序列化 序列化:对象的寿命通常随着生成该对象的程序的终止而终止,而有时候需要把在内存中的各种对象的状态(也就是实例变量,不是方法)保存下来,并且可以在需要时再将对象恢复。...在反序列化时,为了构造父对象,只能调用父类的无参构造函数作为默认的父对象。因此当我们取父对象的变量值时,它的值是调用父类无参构造函数后的值。

    94430

    为什么Java、Python会成为程序员最害怕的编程语言?

    但这不是 Java 的错,而是 Java 程序员的一种文化怪癖。 Java 是冗长的,但这不一定就是个问题。...然而具有讽刺意味的是,这甚至可能是问题的一部分:有了优秀的图形库和 Web 框架,R 突然看起来不太像一个专门的统计工作台,而更像一个通用的工作台了。...在 2020 年 7 月的报告中,R 从 Tiobe 指数的第 20 位跃升至第 8 位。这是一个巨大的变化。不管是什么原因,如果你用它工作,而不是反对它,那么 R 将是一个更愉快的环境。...它具有合理的面向对象的特性(尽管公认有些古怪)。我又回到了一些旧的循环脚本,并且经常能够完全不使用循环就编写它们。如果你想把一个连贯的想法放在一条线上,那就是所有可能世界中最好的。...C 和 C++(排名分别为第 5 和第 8)给了你很大的空间,但对于几乎任何项目,它们都能让你尽可能接近硬件,而无需担心使用汇编语言的问题。它们是消失在过去呢,还是会永远与我们同在呢?

    64110

    网页也能跑大模型?

    丹尼尔:这我就纳闷了,一个专门看网页的浏览器,怎么还能“兼职”跑模型呢?蛋兄,快给我讲讲呗蛋先生:你想啊,一颗种子能不能发芽,得看它有没有适合生存的环境。...为什么要跑在浏览器呢?蛋先生:那我问你,你为什么想把模型跑在浏览器上呢?丹尼尔:额~,这~,就觉得挺酷的嘛!不过说实话,我还真没认真想过这个问题。蛋兄,你给说道说道?蛋先生:来,咱们从请求链路说起。...可用户只想部署个模型而已,能不能把问题简单化呢?丹尼尔:确实蛋先生:于是就有了 onnx 这个开放标准。...一次不行,我们可以分次嘛!我们可以将模型分成模型图和权重,权重信息作为外部数据另外加载即可。只要模型图不超过2G,咱就可以突破这2G的限制了丹尼尔:那岂不是可以加载超级大的模型了?...模型最终是要加载到运行时环境的,而我们的运行时是在 WebAssembly 环境中。根据 WebAssembly 规范,Memory 对象的大小顶多4G。

    44621

    第8章 泛型第8章 泛型

    但是在集合类的场景下,我们通常需要编写可以应用于多种类型的代码,我们最简单原始的做法是,针对每一种类型,写一套刻板的代码。这样做,代码复用率会很低,抽象也没有做好。我们能不能把“类型”也抽象成参数呢?...我们能不能让 MutableList 成为 MutableList 的父类型呢? Java泛型中引入了类型通配符的概念来解决这个问题。...add元素错误信息 这通常会让我们感到困惑:为什么Number的对象可以由Integer实例化,而ArrayList的对象却不能由ArrayList实例化?...为了弄清楚这些问题,我们需要了解Java中的逆变和协变以及泛型中通配符用法。 List<?...8.4.3 PECS 现在问题来了:我们什么时候用extends什么时候用super呢?

    1.9K20

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

    今天来学习一下 Java 中的 this 关键字吧。”喝了一口农夫山泉后,我对三妹说。 “this 关键字有很多种用法,其中最常用的一个是,它可以作为引用变量,指向当前对象。”...“哇,真的呢,好神奇啊!”三妹为了配合我的演出,也是十二分的卖力。 “我们可以在一个类中使用 this 关键字来调用另外一个方法,如果没有使用的话,编译器会自动帮我们加上。”...ThisAsConstrutorParam() 中,我们使用 this 关键字作为参数传递给了 Data 对象,它其实指向的就是 new ThisAsConstrutorParam() 这个对象。”...“this 关键字也可以作为参数在构造方法中传递,它指向的是当前类的对象。当我们需要在多个类中使用一个对象的时候,这非常有用。” “来看一下输出结果。”...09、ending “三妹,this 和 super 关键字我们就学到这里吧,你还有什么问题吗?”三妹学习 Java 的劲头让我对她未来的编程生涯充满了信心。

    35210
    领券