父类构造函数-java调用super 可以不放在第一行?

问题描述

java调用super 可以不放在第一行?

今天看mybatis插件源码时候,发现SqlSessionTemplate中有这么一行:

不能理解:java调用super()不是必须放在构造器的第一行吗? 为什么这里不是放在第一行?

解决方案

应该是不可以的呀!
楼主的代码真的是源码 吗?是不是通过反编译工具反编译出来的,反编译工具在做反编译的时候可能会出问题的。

解决方案二:

如果是构造函数,不可以,其他可以

解决方案三:

找到答案时。希望楼主分享一下

解决方案四:

this() super()是你如果想用传入当前构造器中的参数或者构造器中的数据调用其他构造器或者控制父类构造器时使用的,在一个构造器中你只能使用this()或者super()之中的一个,而且调用的位置只能在构造器的第一行,在子类中如果你希望调用父类的构造器来初始化父类的部分,那就用合适的参数来调用super(),如果你用没有参数的super()来调用父类的构造器(同时也没有使用this()来调用其他构造器),父类缺省的构造器会被调用,如果父类没有缺省的构造器,那编译器就会报一个错误。
也就是说你必须在构造器的第一行放置super或者this构造器,否则编译器会自动地放一个空参数的super构造器的,其他的构造器也可以调用super或者this,调用成一个递归构造链,最后的结果是父类的构造器(可能有多级父类构造器)始终在子类的构造器之前执行,递归的调用父类构造器。无法执行当前的类的构造器。也就不能实例化任何对象,这个类就成为一个无为类。

解决方案五:

解决方案六:

不可以的我是初学者了解的不很好只能帮到这了

解决方案七:

构造函数的话,一定要放在第一行

解决方案八:

super超类我看到的好像都是在第一行啊,所以应该是只能放在第一行。

解决方案九:

你说的对,应该是反编译器的问题

时间: 2024-08-03 21:25:44

父类构造函数-java调用super 可以不放在第一行?的相关文章

各位好,我想知道这个地方为什么父类构造函数被调用了

问题描述 function A(){ // just like componentalert('A constructor');this.initComponent();}A.prototype = {constructor : A,initComponent : function() {alert('a initComponent');}}//var a = new A();B = Ext.extend(A, { // just like windowinitComponent : funct

父类构造函数-java中子类重写父类构造方法问题

问题描述 java中子类重写父类构造方法问题 伪代码 class 子类 extends 父类 { super () } super可写可不写 反正不写也会执行是吧 解决方案 是的,如果调用无参的构造函数,可以不写,因为这是默认的. 解决方案二: 默认调用父类的无参构造方法,但是如果父类中没有无参构造方法就必须得写了,因为要传参数才能创建父类 解决方案三: super()默认是有的 解决方案四: 父类构造是不能被重写的 解决方案五: java中子类调用父类的构造方法Java中子类与父类的构造方法的

JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖

JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有23种设计模式,解决某一问题最有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 想要保证对象唯一该怎么做> 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 2.还为了让其他程序访问到该类对象,只好在本类中自定义一个对象 3.为了方便其他程序对自定义对象的访问,可以对外提供

java中super.父类方法和super( )的区别和联系是什么

问题描述 java中super.父类方法和super( )的区别和联系是什么 java中super.父类方法 和super( )的区别和联系是什么 为什么子类重写父类方法之后还要在那方法体里面写super.父类方法 解决方案 super.父类方法就是调用父类的方法.super() 就是执行父类的构造方法.重写后调用不调用父类方法是看你具体需求的.如果父类有a,b两个方法,你子类只重写了a方法,那么子类中并没有b方法,这时你就要 在你重写的a中写super.b()

巧用Python装饰器 免去调用父类构造函数的麻烦_python

先看一段代码: 复制代码 代码如下: class T1(threading.Thread): def __init__(self, a, b, c): super(T1, self).__init__() self.a = a self.b = b self.c = c def run(self): print self.a, self.b, self.c 代码定义了一个继承自threading.Thread的class,看这句 super(T1, self).__init__() 也有些人喜欢

linux下,java调用dll文件时,dll应该放在哪

问题描述 windows下,java调用dll文件时,dll放在system32这个文件夹下面,那linux下,dll文件应该放在哪? 问题补充:radio123 写道 解决方案 楼主要伤心了 linux底下应该不能直接调用dll 二进制格式不一样解决方案二:你们有谁做过把网页生成图片的功能吗,我提问很久了,都没人搭理我,我在windows下行,在linux下就不行了解决方案三:其实我也是啊,一个功能好不容易实现了,但是linux下不能运行,郁闷死了解决方案四:这个还真没有,还是借助网上力量搜索

Java 关键字super和this的使用及区别

"this",作为一个特殊的关键字,它的规则如下: 1.可以表示构造函数传递.this(a,b)表示调用另外一个构造函数.这里面的this就是一个特殊语法,不是变量,没有什么类型.  2.可以在一个类的非static成员内部使用,表示当前这个对象.此时,this就是一个final的普通变量,它有静态类型,就是这个类本身:它有动态类型,就是当前这个对象的类型.你可以对它调用成员函数,把它传递给别的函数等. "super"和"this"类似,但是也有

Java中super的使用

一.super调用超类构造函数 super(parameter-list): parameter-list指定超类中构造函数所需的任何形参,super()必须是在子类构造函数中执行的第一个语句.超类定义的任何形式的构造函数都可以被super()调用,被执行的构造函数就是与实参相匹配的那一个. 当存在多重继承时,super总是引用最靠近的超类的构造函数.例如:C类继承B类,B类继承A类,则C类的构造函数中使用super,引用B类的构造函数. 如果不使用super(),那么就会执行每个超类的默认(无

解析java中super的用法分析_java

昨天写this用法总结的时候,突然产生了一个问题,请教别人之后,有了自己的一点认识.还是把它写下来,为大家更好的认识提供一点思路.1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量:2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间,在默认的构造函数中先初始化变量,调用另一个的时候覆写已经初始化的变量的值:3)整个调用的过程和递归调用函数有点类似,不断充气球,直