首页
学习
活动
专区
工具
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 问题

89830

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

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

76550

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

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

40610

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

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

57700

Linux内核管理风格

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

77260

Java 最困扰你那些事

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

81880

MyBatis源码解读(1)——SqlSessionFactory

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

72470

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

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

27220

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

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

46910

详解 Java 泛型

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

85220

Python__init__()方法整理(两种解释)

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

6.4K50

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.1K20

(16) 继承细节

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

67290

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

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

28420

javaserializable接口_javacloneable接口

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

91930

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

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

61710

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

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

34010

第8章 泛型第8章 泛型

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

1.9K20

java到底和C++有啥区别?

如果不自己定义一个,就会获得一个默认构建器。如果定义了一个非默认构建器,就不会为我们自动定义默认构建器。和C++是一样。注意没有复制构建器,因为所有自变量都是按引用传递。...Java我们无论如何都只有一个分级结构。尽管表面上看似乎造成了限制,但由于我们知道每个对象肯定至少有一个Object接口,所以往往能获得更强大能力。...Java编译器也许会自行决定嵌入一个方法,但我们对此没有更多控制权力。Java,可为一个方法使用final关键字,从而“建议”进行嵌入操作。...Java用extends关键字标志从一个基础类继承,并用super关键字指出准备基础类调用方法,它与我们当前所在方法具有相同名字(然而,Javasuper关键字只允许我们访问父类方法—...通过C++设定基础类作用域,我们可访问位于分级结构较深处方法。亦可用super关键字调用基础类构建器。正如早先指出那样,所有类最终都会从Object里自动继承。

1.5K60
领券