super()表示调用父类中的构造方法

1、子类继承父类,子类的构造方法的第一行,系统会默认编写super(),在调用子类的构造方法时,先调用父类的无参数构造方法

2、如果父类中只有有参数构造方法,那么子类继承父类时会报错,因为子类的构造方法在默认调用父类无参数构造方法super()不存在。

3.如果子类的第一行编写了this()、this(实参),因为this()也会占用第一行,所以此时就会将super()挤掉,就不会调用父类构造方法。

实例1.子类的构造方法会默认在第一行先调用父类无参数构造方法super()

  1. //父类
  2. public class Father
  3. {
  4.  
  5. int id;
  6.  
  7. public Father()
  8. {
  9. System.out.println("调用父类中的构造方法");
  10. }
  11. }
  12.  
  13. //子类
  14. public class Son extends Father
  15. {
  16. public Son()
  17. {
  18. System.out.println("调用子类构造方法");
  19. }
  20.  
  21. }
  22.  
  23. //测试类
  24. public class Test
  25. {
  26. public static void main(String[] args)
  27. {
  28. Son s = new Son();
  29. }
  30.  
  31. }
  32.  
  33. //结果是:先调用父类无参数构造方法,在调用子类构造方法
  1.  

实例2:父类中没有参数构造方法

  1. //父类中编写有参数构造方法,覆盖无参数构造方法
  2. public class Father
  3. {
  4.  
  5. int id;
  6. //定义有参数构造方法
  7. public Father(int id)
  8. {
  9. System.out.println("调用父类中的构造方法");
  10. }
  11. }
  12.  
  13. //子类继承父类
    //因为父类中没有无参数构造方法,所以会子类继承父类时会报错
  1.  

我们可以通过在子类中调用父类有参数构造方法来避免这种错误,

  1. //定义父类,并且编写有参数构造方法覆盖无参数构造方法
  2. public class Father
  3. {
  4.  
  5. int id;
  6.  
  7. //编写有参数构造方法覆盖无参数构造方法
  8. public Father(int id)
  9. {
  10. System.out.println("调用父类中的构造方法");
  11. }
  12. }
  13.  
  14. //定义子类
  15. public class Son extends Father
  16. {
  17. public Son()
  18. {
  19.  
  20. //在构造方法中调用父类有参数构造方法
  21. super(10);
  22. System.out.println("调用子类构造方法");
  23. }
  24.  
  25. }
  26.  
  27. //编写test类
  28.  
  29. public class Test
  30. {
  31. public static void main(String[] args)
  32. {
  33. Son s = new Son();
  34. }
  35.  
  36. }
  37.  
  38. 测试结果:
  1.  

也可以在构造方法中调用本类中其他构造方法,来挤掉super()调用父类中无参数构造方法

  1. //父类
  2. public class Father
  3. {
  4.  
  5. int id;
  6.  
  7. //
  8. public Father(int id)
  9. {
  10. System.out.println("调用父类中的构造方法");
  11. }
  12. }
  13.  
  14. //子类
  15. public class Son extends Father
  16. {
  17. //无参数构造方法
  18. public Son()
  19. {
  20. //手动编写调用父类有参数构造方法
  21. super(10);
  22. System.out.println("调用子类构造方法");
  23. }
  24.  
  25. //有参数构造方法
  26. public Son(int i)
  27. {
  28. //调用本类其他构造方法,挤掉super()
  29. this();
  30. System.out.println();
  31. }
  32.  
  33. }

super()调用父类构造方法的更多相关文章

  1. 关于继承中的super()调用父类构造方法

    super super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. 每当你new一个子类对象的时候,子类对象都隐式内置了一个父类对象.所以说,为了那个内置的父类 ...

  2. 使用super调用父类的构造方法

    package com.bjpowernode.t02inheritance.c09; /* * 使用super调用父类的构造方法 */public class TestSuper02 { publi ...

  3. super关键字和调用父类构造方法

    表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...

  4. java super关键字和调用父类构造方法

    表示父类对象的默认引用 如果子类要调用父类被覆盖的实例方法,可用super作为调用者调用父类被覆盖的实例方法. 使用super调用父类方法 使用super调用父类的构造方法 调用构造方法 本类中调用另 ...

  5. [转]Java中子类调用父类构造方法的问题分析

    在Java中,子类的构造过程中,必须调用其父类的构造函数,是因为有继承关系存在时,子类要把父类的内容继承下来,通过什么手段做到的? 答案如下:    当你new一个子类对象的时候,必须首先要new一个 ...

  6. 第7.22节 Python中使用super调用父类的方法

    第7.22节 Python中使用super调用父类的方法 前面章节很多地方都引入了super方法,这个方法就是访问超类这个类对象的.由于super方法的特殊性,本节单独谈一谈super方法. 一.su ...

  7. python使用super()调用父类的方法

    如果要在子类中引用父类的方法,但是又需要添加一些子类所特有的内容,可通过类名.方法()和super()来调用父类的方法,再个性化子类的对应函数. 直接使用类名.方法()来调用时,还是需要传入self为 ...

  8. [py]super调用父类的方法---面向对象

    super()用于调用父类方法 http://www.runoob.com/python/python-func-super.html super() 函数是用于调用父类(超类)的一个方法. clas ...

  9. Java -- 子类使用super调用父类的方法A,A 调用了方法B,子类也override方法B,那么super.A()最终调用到了子类的B方法

    public class SuperClass{ public void printA(){ System.out.print("SuperClass-printA"); prin ...

随机推荐

  1. 彻底搞懂Scrapy的中间件(一)

    中间件是Scrapy里面的一个核心概念.使用中间件可以在爬虫的请求发起之前或者请求返回之后对数据进行定制化修改,从而开发出适应不同情况的爬虫. "中间件"这个中文名字和前面章节讲到 ...

  2. 1. [Vue warn]: Missing required prop: "value"

    意思是说数据没有绑定,页面缺少value值.应该v-model进行数据绑定.

  3. mysql创建用户并分配权限

    添加新用户 允许本地 IP 访问 localhost, 127.0.0.1 create user 'test'@'localhost' identified by '123456'; 允许外网 IP ...

  4. python的str.format方法

    format方法被用于字符串的格式化输出. print('{0}+{1}={2}'.format(1,2,1+2)) #in 1+2=3 #out 可见字符串中大括号内的数字分别对应着format的几 ...

  5. Git常用命令(一)

    转自2.1 Git 基础 - 获取 Git 仓库 获取帮助 `$ git help <verb> $ git <verb> --help $ man git-<verb& ...

  6. Win7+ 电脑 休眠 自动唤醒

    https://jingyan.baidu.com/article/3ea51489d905df52e71bba6b.html

  7. for 和while循环 if else

    for和 while循环 当你知道循环次数的话就用for循环, 不知道的时候用while循环,while必须要有结束条件 a +=1  等于 a =a+1 for i in  xxx: i:是一个变量 ...

  8. MFC 读写文件

    写文件: #include<fstream> CStdioFile file; file.Open(_T("parametertable.txt"), CFile::m ...

  9. Django中的视图(view)

    视图 1.什么是视图 视图就是Django项目下的view.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相当于一个中央情报处理系统 2.具体视图实 ...

  10. idea Tomcat部署时没有update classes and resources

    idea 没有update classes and resources         发现为了方便调试页面,想用idea的update classes and resources找不到了,发现需要把 ...