一、构造函数的作用

  • 创建类的对象,只有对象才能调用一个类中的方法和属性

二、在有继承关系的类中,创建子类对象,初始化的顺序

  • 先父类构造 —>后子类构造

  • 为什么父类构造会被调用?因为有继承关系,子类创建了对象会用到父类的属性方法,所以父类也要初始化,不然你继承父类而不用父类的属性和方法,那继承还有什么意义。

  • 怎么调用父类构造的?在子类构造方法第一行默认调用super(),这意思就是调用父类的空参数构造函数,super()你加了系统不加,你不加系统默认有一个

三、空参数构造函数必须有(关键)

+在一个类中,肯定会有构造函数,而且肯定会有空参构造函数,总的来说就是,1、只有空参构造 2、空参构造以及其他重载的多个有参构造

  • 如果你没写任何构造,系统默认添加空参构造,如果你写了有参构造,那么你必须把那个空参构造也显示的添加上

四、this() super()

+ this()调用的是本类中的空参构造,本类空参构造中其实也隐含super(),所以也会调用到父类空参构造:有参构造—this()—本类无参构造—spuer()—父类无参构造—父类被初始化

  • super() 调用父类空参数构造方法,

  • super(参数一,参数二,….),调用父类指定参数个数的构造函数

五、什么时候必须在构造函数里面调用super(参数)

  • 如果你创建子类对象 同时想调用父类非空参数的构造函数,那么就得在第一行加上super(参数个数):这种情况一般没什么意义

六:综合来说:我的理解

super()不加,系统默认会加上,super()的作用就是调用父类空参数构造,初始化父类,初始化了父类,子类才能通过创建的子类对象调用父类的属性和方法,这就是super()的意义。

  1. class A {
  2. public A(){
  3. System.out.println("父类无参构造");
  4. }
  5. public A(String a){
  6. //这里默认调用空参构造,所以必须定义空参构造
  7. System.out.println("父类有参构造");
  8. }
  9. }
  10. class B extends A{
  11. B(){
  12. System.out.println("子类无参构造");
  13. }
  14. public B(String a){
  15. this();
  16. System.out.println("子类有参构造");
  17. }
  18. }
  19. public class test {
  20. public static void main(String[] args) {
  21. // A a1=new A();
  22. // A a2=new A("啦啦啦");
  23. //B b1 = new B();
  24. B b2 = new B("呃呃呃");
  25. }
  26. }

构造函数,super()的更多相关文章

  1. JavaScript学习笔记(散)——继承、构造函数super

    构造函数中的super 今天看<JavaScript设计模式与开发实践>时,在书中看到一段代码出现super语句,第一次看到这个关键字,所以上网查了下它的作用,发现这个关键字是来自java ...

  2. java中的this和super的作用和异同和C++中调用父类的构造函数

    来源于:http://www.cnblogs.com/hasse/p/5023392.html 这几天看到类在继承时会用到this和super,这里就做了一点总结,与各位共同交流,有错误请各位指正~ ...

  3. 面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

    若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果: 本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing ...

  4. 继承:继承后子类构造函数具有隐式super,所以子类中所以的构造函数默认会访问父类中的空参数的构造函数

    class Test { Test(){ System.out.println("Test"); } Test(String name){ System.out.println(& ...

  5. java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数

    问题一:java的构造函数能否被继承? 笔者初学java看的一本书说:“java的子类自然的继承其超类的“非private成员”. 通常java的构造函数被设置为public的(若你不写构造函数,ja ...

  6. 继承、多态——成员变量、成员函数、构造函数(this、super)

    继承 1.继承使用原因: 1.提高了代码的复用性 2.让类与类之间产生了关系,有了这个关系,才有了多态的特性 2.继承注意事项: 千万不要为了获取其他类的功能,简化代码而继承. 必须是类与类之间有所属 ...

  7. 为什么java构造函数的构造器只能在第一行写this() 或者super() ?

    最近在看内部类, 但是被“为什么匿名内部类或者局部内部类使用方法的局部变量时, 局部变量一定得是final类型”困扰着, 在网上查找资料的时候, 发现我对类初始化完全不了解, 之前的认识都是错误! 所 ...

  8. ES6中构造函数内super关键字的使用

    super关键字用于访问和调用一个对象的父对象上的函数. super.prop和super[expr]表达式在类和对象字面量任何方法定义中都是有效的. 语法 super([arguments]); / ...

  9. 错误:Implicit super constructor xx() is undefined for default constructor. Must define an explicit constructor

    错误:Implicit super constructor xx() is undefined for default constructor. Must define an explicit con ...

随机推荐

  1. Redis简介+常用命令

    Redis=REmote DIctionary Server Redis是一个使用C语言编写的开源数据库,是高性能的key-value数据库,是内存数据库,支持数据持久化. Redis常用数据类型: ...

  2. 使用linux计划任务自动拉起停止的通达OA服务apache和mysql服务

    概述: 数据库或web服务器瞬时并发过大时,可能面临宕机的危险,用类似开门狗的程序自动监控程序是否正常运行,在服务停止时自动启动服务,可临时解决该问题 监控apache服务的脚本: 每两分钟执行脚本检 ...

  3. 转载:第2章 Nginx的配置 概述《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19623.html Nginx拥有大量官方发布的模块和第三方模块,这些已有的模块可以帮助我们实现Web服务器上很多的功能.使用这些模块 ...

  4. java多线程快速入门(七)

    什么是守护线程 守护线程是为用户线程服务的这么一个线程,主线程结束,守护线程也结束 package com.cppdy; class MyThread3 extends Thread{ @Overri ...

  5. cf1104d二分+数学

    #include<bits/stdc++.h> using namespace std; bool ask(int x,int y){ printf("? %d %d\n&quo ...

  6. 性能测试十二:jmeter进阶之java请求参数化

    如项目中的ip.端口号之类的,都可以在此代码中定义 public Arguments getDefaultParameters() { // TODO Auto-generated method st ...

  7. python接口自动化测试二十四:上传多个附件,参数化

    # 添加多个附件参数化files = [("1.png", "1.png") ("2.png", "2.png") ]d ...

  8. IntelliJ IDEA像Eclipse一样打开多个项目(转)

    转自: 海涛zht666   IntelliJ IDEA像Eclipse一样打开多个项目 我们做项目实际中经常会遇到这样的情况,创建一个common项目(Maven项目)作为公用项目,common中有 ...

  9. 步步为营-63-Asp.net-get与post

    1 get Get方式将数据发送到服务端,那么会将用户在表单中的数据放置到浏览器的地址栏中发送到服务器 格式:表单元素name属性的值=用户输入的值 请求地址:http://localhost:594 ...

  10. 带信号灯的最短路dijkstra问题(阿里巴巴2018校园招聘算法题)

    题目描述 现在城市有N个路口,每个路口有自己的编号,从0到N-1,每个路口还有自己的交通控制信号,例如0,3表示0号路口的交通信号每3个时刻变化一次,即0到3时刻0号路口允许通过,3到6时刻不允许通过 ...