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

怎么用super调用构造函数

任何时候一个子类需要引用它直接的超,它可以用关键字super来实现。super有两种通用形式。第一种调用构造函数。第二种用来访问被子类的成员隐藏的超成员。...使用super调用构造函数 子类可以调用中定义的构造函数方法,用super的下面形式:java复制代码super(parameter-list); 这里,parameter-list定义了超构造函数所用到的所有参数...上面的例子,调用super( )用了三个参数。既然构造函数可以被重载,可以用超定义的任何形式调用super( ),执行的构造函数将是与所传参数相匹配的那一个。...例如,下面是BoxWeight一个完整的实现,BoxWeight具有以不同方法构造盒子的构造函数。在每种情况下,用适当的参数调用super( )。...当一个子类调用super( ),它调用它的直接超构造函数。这样,super( )总是引用调用直接的超。这甚至在多层次结构中也是成立的。

9910
您找到你想要的搜索结果了吗?
是的
没有找到

python 子类调用构造函数实例

当子类继承父后,需要调用的方法和属性时,需要调用的初始化函数。...,但新的构造函数没有初始化父,当没有初始化父构造函数时,就会报错。...super函数返回一个super对象,解析过程自动查找所有的父和父的父,当前和对象可以作为super函数参数使用调用函数返回的方法是超的方法。...使用super函数如果子类继承多个父只许一次继承,使用一次super函数即可。 如果没有重写子类的构造函数,是可以直接使用的属性和方法的。...,直接可以调用构造方法 python2 中 super(Consumer, self).init(), 需要传两个参数一个是名, 一个是self.

3.5K30

【C++】构造函数调用规则 ( 默认构造函数 | 默认无参构造函数 | 默认拷贝构造函数 | 构造函数调用规则说明 )

; 创建一个对象 并将其 赋值给 另一个对象时 , 会自动调用 默认拷贝构造函数 ; 如果 C++ 中 没有定义拷贝构造函数 , C++ 编译器会自动为该类提供一个 " 默认的拷贝构造函数 " ,...obj; // 调用默认无参构造函数 MyClass obj2 = obj; // 调用默认拷贝构造函数 二、构造函数调用规则 ---- 1、构造函数规则说明 构造函数调用规则 : 提供 默认无参构造函数..., C++ 编译器不会自动生成 默认的无参构造函数 和 默认的拷贝构造函数 ; 使用 Student s; 代码 创建对象 , 报错 “Student”: 没有合适的默认构造函数可用 ; 说明 C++...默认的无参构造函数 和 默认的拷贝构造函数 ; 使用 Student s; 代码 创建对象 , 报错 “Student”: 没有合适的默认构造函数可用 ; 说明 C++ 编译器没有为该类生成 默认的无参构造函数..., int height) { m_age = age; m_height = height; cout << "调用参数构造函数 m_age = " << m_age << endl;

78030

java scanner构造函数_使用Scanner作为构造函数参数的Java

参考链接: Java Scanner仪 这是一个学校任务的问题,这就是为什么我这样做的原因。...使用Scanner作为构造函数参数的Java  总之,我在主要方法(Scanner stdin = new Scanner(System.in);是行)中使用Stdin制作扫描仪,从程序运行时指定的txt...这种扫描仪按预期工作为主,不过,我需要用它在具有扫描仪作为参数的自定义:  public PhDCandidate(Scanner stdin)  {  name = stdin.nextLine()...只有调用.next()的作品。我可以让程序工作,但这会很冒险,我真的不明白发生了什么。我怀疑我错过了一个非常简单的概念,但我迷路了。任何帮助,将不胜感激。  ...–  +0  @ Code-Guru:只要我尝试使用扫描器(除了stdin.next(),所有其他方法都会中断),就会结束,所以立即尝试使用.nextLine() –

2.8K30

C++ explicit禁止单参数构造函数隐式调用

1.单参数构造函数隐式调用 C++中单参数构造函数是可以被隐式调用的,主要有两种情形会隐式调用参数构造函数: (1)同类型对象的拷贝构造;即用相同类型的其它对象来初始化当前对象。...即其它类型对象隐式调用参数拷贝构造函数初始化当前对象。比如A a=1;就是隐式转换,而不是显示调用构造函数,即A a(1);。...,编译器默认生成拷贝构造函数 cout<<objMyInt.getMyInt()<<endl; cout<<objMyInt1.getMyInt()<<endl; } 程序输出结果: 10 10 单参数构造函数在上例中如下两行被调用...2.单参数构造函数隐式调用的危害 单参数构造函数隐式调用不仅仅会给代码可读性造成影响,有时会带来意外的结果。...3.explicit禁止单参数构造函数的隐式调用 在没有合适理由必须使用隐式转换的前提下,为了提高代码可读性以及避免单参数构造函数的隐式调用带来的潜在风险,建议使用explicit关键字阻止单参数构造函数的隐式调用

4.6K60

【Kotlin】的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

文章目录 一、主构造函数定义临时变量 二、主构造函数中定义成员属性 三、次构造函数 四、构造函数默认参数 一、主构造函数定义临时变量 ---- 在 Kotlin 中 , 可以在 声明 时 在 名后..., 每个次构造函数都可以有不同的参数组合 ; 定义次构造函数后 , 必须调用构造函数 , 并且为每个主构造函数参数设置 参数值 ; 次构造函数中可以实现代码逻辑 , 作为主构造函数的补充 ; 代码示例...: 下面代码中 , 次构造函数 必须 调用构造函数 , 如 name 和 age 参数必须设置默认值 name = "Jerry", age = 12 ; class Hello( // 主构造函数...---- 在定义 构造函数 时 , 可以为 构造函数参数 指定 默认值 , 如果 用户传入了 值参 则 使用用户传入的值 , 如果用户没有传入值 则 使用该 默认值 ; 如果 构造函数 参数有 指定默认值..., 可以不为其传递 值参 , 构造函数中跳过该参数 , 其 后面的参数需要使用 参数名 = 参数值 进行赋值 ; 代码示例 : class Hello( // 主构造函数, 直接在主构造函数中定义属性

4.8K20

使用Python构造函数和析构函数

1、问题背景当使用Python时,可以使用构造函数和析构函数来初始化和清理实例。构造函数在创建实例时自动调用,而析构函数在删除实例时自动调用。...在上面的代码示例中,Person具有一个构造函数__init__和一个析构函数__del__。...构造函数__init__在Person的实例被创建时被调用,它将实例的name属性设置为传入的参数,并将实例的人口计数population加1。...析构函数__del__在Person的实例被删除时被调用,它将实例的人口计数population减1。...问题是,如果我在程序中显式地删除Person的实例,析构函数__del__是否会被自动调用,或者我是否需要在“main”程序/中添加一些东西,如上面的代码示例所示?

12810

【JavaScript】内置对象 - Date 日期对象 ① ( Date 对象简介 | 使用构造函数创建 Date 对象 | 构造函数参数为时间戳 | 构造函数参数为空 | 构造函数参数为字符串 )

, 可以直接使用 ; Date 对象 只能 通过调用 Date 构造函数 进行实例化 , 调用 Date() 构造函数时 , 必须使用 new 操作符 进行调用 ; 创建的 Date 对象 , 可以用来创建日期和时间的实例..., monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]); 二、使用构造函数创建 Date 对象 1、构造函数参数为空...使用 new Date(); 构造函数 创建 Date 对象 , 该构造函数中没有参数 , 则会返回当前的时间 ; 代码示例 : // 创建 Date 内置对象 var...使用 new Date(value); 构造函数 创建 Date 对象 , 传入的参数是 一个 Unix 时间戳 Unix Time Stamp , 该时间戳 是 从 1970 年 1 月 1 日 00...// 输出 : Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间) console.log(date); 执行结果 : 4、构造函数参数为多个数字值 使用

18110

Aop动态生成代理时支持带参数构造函数

一、背景   在某些情况下,我们需要植入AOP代码的并没有默认构造函数。那么此时动态生成的代理也需要相同签名的构造函数,并且内部调用原始构造函数。...二、梳理功能点   在已支持通过默认构造函数进行AOP代码植入的情况下(以前发过一篇博文,传送门:大家一起Aop),实现该功能我们需要做的是:   1.如何通过获取原始构造函数参数列表,并使用Emit...生成代理的相应构造函数。   ...2.如何创建并保存实例化代理的委托,加快实例化速度。 三、实现方案   功能1:   在原来的生成代理,代理中的方法处增加生成构造函数的代码。...到这里我们的动态构造已经完成了,接下去解决功能2:   这里只要在原先直接取默认构造函数的地方增加一个判断,获取指定参数构造函数构造委托。

1.2K20

Java构造函数调用顺序问题

参考链接: Java构造函数 今天对Java的构造函数调用顺序进行研究,使用的是与C++类似的方法,即不对源码进行研究,而是直接通过打印代码对构造函数调用顺序进行研究。 ...代码如下,使用的是Java核心技术中的代码,对其进行了改造,在构造函数中加入了输出信息  public class ConstructorTest {    public static void main...   }   执行结果   object initialization block : 0  static initialization block : 1  constructors3 : 2   构造函数最后调用...最后一点:如果构造器第一行调用了第二个构造器,则执行第二个构造器的主体。  最后还有一点非常重要的内容,构造调用一定要是第一句,否则编译出错。...在构造器中只能调用一次其他构造函数,不能调用两次,即无法再调用第三个构造函数。  本人是初学者,还无法从JVM的角度分析问题,同时回应各位大神对文中的错漏进行指出。

1.1K40

C++带参数构造函数 | 有参构造函数

C++带参数构造函数 在C++中,程序员希望对不同的对象赋予不同的初值,可以采用带参数构造函数,在调用不同对象的构造函数时,从外面将不同的数据传递给构造函数, 以实现不同的初始化。...C++构造函数首部的一般形式为  构造函数名(类型1 形参1,类型2 形参2,… ) 程序员是不能调用构造函数的,因此无法采用常规的调用函数的方法给出实参,实参是在定义对象时给出的。...如果数据成员是私有的, 或者中有private或protected的成员,则不能用这种方法初始化。 案例:C++求体积,要求在中用带参数构造函数。...//定义长  }; Box::Box(int h,int w,int l)//在外定义带参数构造函数 {   height=h;   width=w;   length=l;  }  int Box...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C++带参数构造函数 | 有参构造函数 更多案例可以go公众号:C语言入门到精通

3.8K64

【C++】构造函数意义 ( 构造函数显式调用与隐式调用 | 构造函数替代方案 - 初始化函数 | 初始化函数缺陷 | 默认构造函数 )

的 实例对象时 , C++ 编译器 会自动调用 开发者定义的 构造函数 ; 2、构造函数显式调用与隐式调用 构造函数 可以 自动调用 , 也可以手动调用 ; 一般 默认的 无参构造函数 是 自动地...隐式调用 ; 有参构造函数 是 由开发者 手动显式调用 ; 3、构造函数替代方案 - 初始化函数 构造函数的替代方案 - 初始化函数 : 共有初始化函数 : 为每个定义一个 public 共有初始化函数..., 造成未知风险 ; 无法调用 : 在某些特殊场合 , 初始化函数是无法被调用到的 , 如 : 只定义的变量类型 , 没有调用构造函数 , 此时会自动调用无参构造函数初始化实例对象 , 如果使用初始化函数...; 默认拷贝构造函数 : 如果 中没有定义 拷贝构造函数 , C++ 编译器 会默认定义一个 默认拷贝构造函数 , 该函数的作用是进行简单的成员变量赋值 ; 6、代码示例 - 初始化函数无法及时调用..._age; m_height = _height; } 在使用 Student s 代码定义实例对象的场景下 , 无法及时地调用 初始化函数 ; 代码示例 - 初始化函数 : #include "

54120

禁止在构造函数调用函数

构造函数调用函数会导致程序出现莫名其妙的行为,这主要是对象还没有完全构造完成。...这是因为基构造函数调用一个定义在本类中的但是为派生所重写的虚函数,程序运行的时候会调用派生的版本,程序在运行期的类型是 A 而不是 B。...在 C# 中系统会认为这个对象是一个可以正常使用的对象,这是因为程序在进入构造函数函数体之前已经把该对象的所有成员变量都进行了初始化。...这么做主要是为了避免在构造函数调用抽象中的方法,防止抛出异常。虽然这么写可以避免这个问题但是还存在一个很大的缺陷,它会造成 str 这个对象在整个生命周期中无法保持恒定的值。...Tip:C# 对象的运行期类型是一开始就定好的,即便基是抽象也依然可以调用其中的虚方法。 小结 在基构造函数调用函数会导致代码严重依赖于派生的实现,然后这些实现是无法控制且容易出错的。

1.6K20

java构造函数调用另一个构造函数_java中的构造函数

参考链接: Java程序从另一个调用一个构造函数 package demo03; /*  * 构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法  * 格式:... * public 名称(参数类型 参数名称){  *         方法体  *   * }  * 注意事项:  * 1.构造方法的名称必须和所在的名称完全一样,就连大小写也要一样  * 2.构造方法不要写返回值类型...,连void都不写  * 3.构造方法不能return一个具体的返回值  * 4.如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法,没有参数,方法体什么都不做  * 5.一旦编写了至少一个构造方法...;     }     //有参数构造方法     public Student(String name,int age) {         System.out.println("全参构造方法执行啦...System.out.println("我的姓名是:"+stu2.getName()+"年龄是:"+stu2.getAge());         //如果需要改变对象当中的成员变量数据内容,仍然还需要使用

4.4K60

Java构造函数调用顺序问题

今天对Java的构造函数调用顺序进行研究,使用的是与C++类似的方法,即不对源码进行研究,而是直接通过打印代码对构造函数调用顺序进行研究。...代码如下,使用的是Java核心技术中的代码,对其进行了改造,在构造函数中加入了输出信息 public class ConstructorTest { public static void main...; } 执行结果 object initialization block : 0 static initialization block : 1 constructors3 : 2 构造函数最后调用...最后一点:如果构造器第一行调用了第二个构造器,则执行第二个构造器的主体。 最后还有一点非常重要的内容,构造调用一定要是第一句,否则编译出错。...在构造器中只能调用一次其他构造函数,不能调用两次,即无法再调用第三个构造函数。 本人是初学者,还无法从JVM的角度分析问题,同时回应各位大神对文中的错漏进行指出。

70820
领券