一、构造函数的作用

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

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

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

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

  • 怎么调用父类构造的?在子类构造方法第一行默认调用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学习笔记(面试题)

    1. 什么是redis Redis是一个数据库,他和我们传统的oracle数据库差别是它是基于内存的数据库:因为是基于内存,所以效率就高,在某些场景下就可以对我们传统的关系型数据库做一个补充 2. r ...

  2. asp.net core 通过ajax上传图片及wangEditor图片上传

    asp.net core 通过ajax上传图片 .net core前端代码,因为是通过ajax调用,首先要保证ajax能调用后台代码,具体参见上一篇.net core 使用ajax调用后台代码. 前端 ...

  3. react之异步请求数据,render先行渲染报错,未拿到数据

    import React from 'react' import {connect} from 'react-redux' import { Redirect} from 'react-router- ...

  4. python 全栈开发,Day23(复习,isinstance和issubclass,反射)

    一.复习 class A: def func1(self):pass def func2(self): pass def func3(self): pass a = A() b = A() print ...

  5. 全局JavaScript对象

  6. 支付宝回调JAVA版代码

    支付宝回调: 1 //这个是支付宝回调的信息 2 @RequestMapping("alipay_callback.do") 3 @ResponseBody 4 public Ob ...

  7. python访问百度地图接口并返回信息

    import urllib.parse import urllib.request data = urllib.parse.urlencode({'address': '广东省湛江市霞山区', 'ou ...

  8. java面试题大全-基础方面 答案自己写

    Java基础方面: 1.作用域public,private,protected,以及不写时的区别 2.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类, ...

  9. P1197 [JSOI2008]星球大战 并查集 反向

    题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧 ...

  10. Mq的介绍

    1.使用场景 异步处理 日志收集 流量削峰 应用解耦 2.通信协议 高级消息队列协议(AMQP). 参考文档:http://www.huangxiaobai.com/archives/1267