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

有没有一种方法可以避免我每次扩展一个类时都调用"super“?

在Java中,可以使用默认构造函数来避免每次扩展一个类时都调用"super"。默认构造函数是一个无参的构造函数,它会自动调用父类的无参构造函数。当子类没有定义任何构造函数时,编译器会自动生成一个默认构造函数。

通过使用默认构造函数,子类可以继承父类的属性和方法,而无需显式地调用"super"关键字。这样可以简化代码,并且在扩展类时不需要关注父类的构造函数。

然而,如果子类定义了其他构造函数,那么默认构造函数就不会被自动生成。在这种情况下,如果需要调用父类的构造函数,仍然需要使用"super"关键字来显式调用。

总结起来,使用默认构造函数可以避免每次扩展一个类时都调用"super",但前提是子类没有定义其他构造函数。

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

相关·内容

62道Java核心面试题,这次全了

在 Java 中,抽象用于创建具有某些被子类实现的默认方法一个抽象可以有没有方法体的抽象方法,也可以有和普通一样有方法体的方法。...接口是对的某种行为的一种抽象,接口和之间并没有很强的关联关系,所有的可以实现 Serializable 接口,从而具有序列化的功能。 34、一个接口可以实现或者继承另外一个接口吗?...反射属于高级主题,在常规编程中应该避免使用,因为反射可以通过调用私有的构造方法来破坏设计模式,比如说单例模式。...当我们要访问任何需要通过 Java Classloader 将该类的字节码加在到内存当中,可以通过继承 ClassLoader 并重写 loadClass(String name) 方法来创建自定义的加载器...当在子类中重写了父方法可以通过 super 关键字访问父方法。 也可以使用 super 关键字在子类构造方法调用构造方法,它必须是构造方法中的第一条语句。

63620

【Java】继承

对象调用方法,会先在子类 中查找有没有对 应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父中相应的方法。...方法重写 :子类中出现与父一模一样的方法(返回值类型,方法名和参数列表相同),会 出现覆盖效 果,也称为重写或者复写。 声明不变,重新实现 。...比如新的手机增加来电显示头像的功能,代码如下: 小贴士:这里重写,用到 super. 父成员方法,表示调用的成员方法。 注意事项 1....子类的构 造方法中默认有一个 super() ,表示调用的构造方法,父成员变量初始化后,才可以给子类 使用。...代 码如下: 6. super和this 父类空间优先于子类对象产生 在每次创建子类对象,先初始化父类空间,再创建其子类对象本身。

79620
  • JDK1.9-继承

    对象调用方法,会先在子类中查找有没有对 应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父中相应的方法。...方法重写 :子类中出现与父一模一样的方法(返回值类型,方法名和参数列表相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现。 代码如下: ?...重写的应用 子类可以根据需要,定义特定于自己的行为。既沿袭了父的功能名称,又根据子类的需要重新实现父方法,从 而进行扩展增强。...np.call(); // 调用子类重写的方法 np.showNum(); } } 小贴士:这里重写,用到super.父成员方法,表示调用的成员方法。...和this 父类空间优先于子类对象 产生 在每次创建子类对象,先初始化父类空间,再创建其子类对象本身。

    37220

    Python编程思想(27):的继承

    Python的继承是多继承机制,也就是一个子类可以同时有多个直接父。 1. 继承的语法 Python子类继承父的语法是在定义子类,将多个父放在子类之后的圆括号中。...由于子类是一种特殊的父,因此父包含的范围总比子类包含的范围要大,所以可以认为父是大类,而子类是小。 从实际意义上看,子类是对父扩展,子类是一种特殊的父。...重写父方法 子类扩展了父,子类是一种特殊的父。大部分时候,子类总是以父为基础,额外增加新的方法。但有一种情况例外:子类需要重写父方法。...当然可以通过这种方式来调用; 使用supe()函数调用的构造方法; 在交互式解释器中输入help(super)查看 super()函数的帮助信息,可以看到如下输出信息。...__getattribute__(self, name, /) 从输出的内容可以看出,super其实是一个,因此调用 super()的本质就是调用 super的构造方法来创建 super对象。

    1.3K10

    流畅的python读书笔记-第十章-继

    不要子类化内置类型,用户自己定义的应该继承 collections 模块的, 例如UserDict、UserList 和 UserString,这些做了特殊设计,因此易于扩展。...__mro__) 直接调用 d.pong() 运行的是 B 中的版本。 Python 能区分 d.pong() 调用的是哪个方法,是因为 Python 会按照特定的顺序遍历继承图。...都有一个名为__mro__ 的属性,它的值是一个元组,按照方法解析顺序列出各个超,从当前一直向上,直到 object 。D 然而,使用 super() 最安全,也不易过时。...调用框架或不受自己控制的层次结构中的 方法,尤其适合使用 super()。 多重继承的真实应用 1 多重继承能发挥积极作用。...通过混入重用代码 一个的作用是为多个不相关的子类提供方法实现 应该把那个明确地定义为混入(mixin class) 从概念上讲,混入不定义新类型,只是打包方法,便于重用。

    37710

    JSPatch 实现原理详解

    所以做了一个复杂的事,就是在require生成对象,把名传入OC,OC 通过runtime方法找出这个所有的方法返回给 JS,JS 对象为每个方法生成一个函数,函数内容就是拿着方法名去 OC...后来为了优化内存问题还在 JS 搞了继承关系,不把继承链上所有方法添加到一个JS对象,避免像基 NSObject 的几百个方法反复添加在每个 JS 对象上,每个方法只存在一份,JS 对象复制了 OC...突然脑洞开了下,CoffieScript/JSX 都可以用 JS 实现一个解释器实现自己的语法,可以通过类似的方式做到,再进一步想到其实想要的效果很简单,就是调用一个不存在方法,能转发到一个指定函数去执行...后来挺多人比较关注这个问题,不能新增方法导致 action-target 模式无法用,也开始想有没有更好的方法实现添加方法。...OC 做的事情是,如果是调用 super 方法,找到 superClass 这个方法的 IMP 实现,为当前新增一个方法指向 super 的 IMP 实现,那么调用这个的新方法就相当于调用 super

    3.5K80

    JAVA面试必备知识(基础篇)

    在 Instrument 引用调用 play() 方法,会执行实际引用对象所在的 play() 方法,而不是 Instrument 方法。2、对equals()和hashCode()的理解?...;接口在JDK8之前不能有静态方法,在JDK8中可以有静态方法,且只能被接口直接调用(不能被实现的对象调用)抽象中的方法可以是public、protected; 接口方法在JDK8之前只有public...调用super()必须写在子类构造方法的第一行, 否则编译不通过super从子类调用构造, this在同一调用其他构造均需要放在第一行尽管可以用this调用一个构造器, 却不能调用2个this和...super不能出现在同一个构造器中, 否则编译不通过this()、super()指的对象,不可以在static环境中使用本质this指向本对象的指针。...每次对String的操作相当于生成一个新的String对象,而对StringBuffer和StringBuilder的操作是对对象本身的操作,而不会生成新的对象,所以对于频繁改变内容的字符串避免使用String

    66230

    2.双亲委派机制详细解析及原理

    知道双亲委派机制的逻辑思想,然后这个思想是否可以被我们借鉴,为我所用。这才是学习知识的目的。 比如:双亲委派机制,避免的重复加载,避免了核心库被修改。...这时候, 我们知道, Math自己定义的, 引导加载器中不可能有, 加载失败,所以, 他就会去加载这个。...回去扫描/lib/jar包中有没有这个,发现没有,于是让扩展加载器去加载, 扩展加载器会去扫描扩展包lib/jar/ext包,里面有没有呢?...通过调用findLoadedClass(name)方法来查询已经加载的中, 有没有com.lxl.jvm.Math. 那么findLoadedClass(name)里面做了什么呢?...我们来看下面的案例 加入, 在本地定义了一个String, 包名是java.lang.String. 也就是是rt.jar包下的String的包名是一样的哈.

    68441

    关于IoC与AOP的一些理解

    (系统中出现循环依赖的话一不小心就掉进了死递归,因此尽可能避免循环依赖设计) 构造注入 构造注入时利用构造函数在实例化的时候注入需要参数的一种方式.对于构造注入的循环依赖如下所示: class A...从软件重用的角度来看,OOP设计只能在对象继承树的纵向上扩展重用,AOP则使的可以在横向上扩展重用,借助三棱镜分光原理可以更好地理解其AOP横向扩展的本质。...其代理方法也很简单,直接将所有操作转向到对应的InvocationHandler,然后用户的InvocationHandler就可以收到相关调用信息,然后做出相关的AOP动作....()属于覆盖的方法,final int CGLIB$hashCode$2()是转向上层的方法,然后再MethodInterceptor调用时将CGLIB$hashCode$2作为Method参数传入,这样保证了调用可以转向父已有的方法...(var1); } } Spring AOP的实现 Spring AOP是基于动态代理实现了一种无侵入式的代码扩展方式,与动态代理本身不同的是AOP的前提是已经存在了目标的实例,因此在AOP要做的就是在目标执行目标方法前后织入相应的操作

    60910

    python基础六

    注意:我们导入模块,会现在本地文件中查找该模块,再去系统变量中查找也就是说如果我们将本地py文件的命名修改成上篇文章的任意一个,再去使用它就会报错。 如果想要调用Test中的Getstr方法呢?...例如 import Test as t 我们想一个问题,如果两个模块拥有同一个方法。 我们可不可以一个相同的别名?...如上我们发现我们每次调用Test的方法或者参数,都会使用Demo.xxx 可以可以直接调用方法呢?...Getstr,Getstr2 以上我们还发现每次调用Test的时候都会输出是Test.py 如果我们想只执行Test的时候执行'是Test.py'这句话,而在其他文件调用的时候不执行怎么办?...__base__) # 所有没有继承的继承object 当我们想要的子类中有和父想相同的方法既要调用自己的方法,也要执行父方法需要用到super 实例: class Father: def

    61430

    JavaScript新特性

    的值为 5 }, 100); } ES6中的循环作用域: ES6 中,使用 let 声明变量可以每次循环迭代创建一个新的块级作用域,避免了上述问题。...//ES6 中使用 `let` 声明变量可以每次循环迭代创建一个新的块级作用域,避免了循环作用域问题。...,通过new命令生成对象实例,自动调用方法 constructor()方法默认返回实例对象,即this 也可以修改… 一个必须有一个constructor()方法,如果没有显式定义,则程序默认添加一个空的...Iterator 接口(即Symbol.iterator方法 //对数组和 Set 结构进行解构赋值,会默认调用Symbol.iterator方法 //扩展运算符(...)也会调用默认的 Iterator...自定义对象实现Iterator 接口: [Symbol.iterator]方法应该返回一个next函数对象 next函数会在每次迭代调用,next函数应该返回包含value和done属性的对象以下是一个简单的例子

    20610

    静态工厂方法

    这或许已经是我们习以为常并脱口而出的,正如下所示: Animal animal = new Animal(); 直接new对象会调用当前的构造方法(有参或者无参),这看起来很正常,但有些时候或许这样做会为以后的扩展不是很友好...但如果业务代码想要创建一个只包含weight属性的Animal对象的话就得重复上述的代码,那有没有更好的一种写法来避免这种问题呢?...: 第一个优势:与构造器相比它们有名字 第二个优势:不用每次调用创建新对象(可以回忆一下基本的构造单例对象的写法) 第三个优势:可以返回原返回类型的子类 第四个优势:在创建带泛型的实例,能使代码变得简洁...当然这只是一个特殊的场景,但我觉得这完全能说明一些问题。至少是不希望的小伙伴调用的代码块出现任何问题。...getinstance(options); 5、create 或者 newInstance一一才象 instance 或者 getinstaηce 样,但 create 或者 newInstance 能够确保每次调用返回一

    52420

    第七章 面向对象编程(进阶)

    super 可用于在子类构造器中调用的构造器 注意: 尤其当子父出现同名成员可以super 表明调用的是父中的成员 super 的追溯不仅限于直接父 super 和 this 的用法相像...的结构,表示调用的属性或方法。 一般情况下,我们可以考虑省略"super."的结构。但是,如果出现子类重写了父方法或子父中出现了同名的属性, 则必须使用"super."...面向对象特征之三 : 多态 ‍ 如何理解多态 : 理解:理解为一个事物的多种形态。 生活举例: 女朋友:想养一个宠物。 孩子:想要一个玩具。...eat方法 d.watchHouse();//可以调用子类扩展方法watchHouse Cat c = (Cat) pet;//编译通过,因为从语法检查来说,pet的编译类型是...具体要看自定义有没有重写 Object 的 equals 方法来判断。 通常情况下,重写 equals 方法,会比较中的相应属性是否相等。

    14810

    从零开始单排学设计模式「装饰模式」黑铁 I

    这种模式创建了一个装饰,用来包装原有的,并在保持方法签名完整性的前提下,提供了额外的功能。...所以这里的话,可以抽象出一个服饰的基,然后各个具体的服饰继承该基即可。...搞定收工,审视一下,自我感觉还算不错,如果新装扮只需改变一下调用顺序即可,如果又新人物,只需重新new一个Person可以了。...关键代码: 1、Component 充当抽象角色,不应该具体实现。 2、修饰引用和继承 Component ,具体扩展重写父方法。...优点:装饰和被装饰可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现的功能。 缺点:多层装饰比较复杂。 使用场景: 1、扩展一个的功能。

    36120

    Java设计模式之命令模式

    ,但是每次都是叫一个组去,布置个任务,然后出计划,次次这样,如果让你当甲方也就是客户,你烦不烦?...,action()方法是执行客户的命令(方法名写成action()是与command的execute()区分开,避免混淆) 修改后的代码如下: public abstract class Command...很简单的,在AddRequirementCommand的execute()方法中增加对PageGroup和CodePage的调用就成了,修改后的代码如下: public class AddRequirementCommand...其实取消也是一个命令,比如叫做undo(),那么在Group抽象中增加undo()方法,3个Group继承中重写undo()方法,然后在UndoRequirementCommand调用3个Group...继承中的undo()方法可以加上这个撤销命令的功能,扩展起来还是很简单的。

    42930

    关于Cloneable接口和clone方法「建议收藏」

    1.1 Java Object根默认提供了clone方法: protected native Object clone() throws CloneNotSupportedException; 一个本地方法...,protected权限: 这样做是为避免我们创建每一个默认具有克隆能力   1.2 实现Cloneable接口 我们要使用一个对象的clone方法,必须Cloneable接口,这个接口没有任何实现...,跟 Serializable一样是一种标志性接口 如果不实现Cloneable接口,会抛出CloneNotSupportedException异常 重写clone方法,使用public修饰(否则外部调用不到...clone方法,构造方法并没有被调用,所以我说创建一个对象new和clone是两条路 public static void main(String[] args) throws CloneNotSupportedException...Object默认的clone方法实际是对域的简单拷贝,对于简单数据类型,是值的拷贝; 对于复杂类型的字段,则是指针地址的拷贝,clone后的对象和原对象指向的还是一个地址空间 所以说默认的clone方法浅克隆

    27310

    【面试虐菜】—— JAVA面试题(2)

    1 String = 与 new 的不同 使用“=”赋值不一定每次创建一个新的字符串,而是从“字符串实例池”中查找字符串。使用“new”进行赋值,则每次创建一个新的字符串。...11 super的作用 解析:使用一些IDE生成代码,常常会在构造方法中见到super这个关键字。顾名思义,super是和父有关的一个关键字,熟悉super的用法对熟练掌握继承很有必要。 ...参考答案:如super():表示调用中的每一参考的构造方法:又如super(10);表示调用中的具有一个整型参数的构造方法。...第二种用法是在子类中调用中的成员,如super.f();意思是调用中的f()方法。 12 final的作用 final修饰符是一个用途非常广泛的修饰符,可以修饰方法,以及属性。 ...而抽象可以有变量,也不强制必须有抽象方法。 16 的继承与接口的实现 解析:继承父实现接口,本质上其实是一样的。都是将父或者接口作为模板,在这个模板上进行扩展或者重写。

    74650

    夯实Java基础系列7:一文读懂Java 代码块和执行顺序

    一个中定义多个具有不同参数的同名方法,这就是方法的重载。这两个构造方法的名称都与名相同,均为 MyClass。在实例化该类可以调用不同的构造方法进行初始化。...如果一个中定义了该方法,则在调用该类对象,将会自动调用该类对象的 toString() 方法返回一个字符串,然后使用“System.out.println(对象名)”就可以将返回的字符串内容打印出来...第一种:子类构造方法没有写super,也就是说你默认调用无参构造方法,这样的话就和子类是无参构造方法一样。...第二种:子类构造方法super(参数),就是调用有参构造方法,系统会找父有没有参数一致(参数数量,且类型顺序要相同)的有参构造方法,如果没有的话,同样也会报错。...,就是方法之外的位置 作用:把多个构造方法共同的部分提取出来,共用构造代码块 调用每次调用构造方法,都会优先于构造方法执行,也就是每次new一个对象自动调用,对 对象的初始化 class A

    62500
    领券