即使我们声明一个没有构造函数的抽象类,编译器还会为我们生成一个默认的保护级别的构造函数。子类实例化时(不管是否为带参构造)只会调用所有父类的无参构造函数,而带参构造必须通过显式去调用.调用顺序是先调用抽象类的无参构造函数,如果子类实例化时是使用带餐的构造函数,则再接着调用抽象类的带参构造函数,最后调用子类本身的构造函数。

abstract class Person {   //定义一个抽象类,必须被继承public  Person(){System.out.println("调用的是父类的无参构造函数");}public   Person(int i) {System.out.println("调用的是父类的有参构造函数");}
}class Student extends Person {//    想调用父类抽象类的有参构造函数必须先显式声明,然后通过super函数调用Student(int i) {super(i);//必须显示的调用父类构造方法,super代表父类对象System.out.println("子类的有参构造函数\n");}//默认调用父类的无参构造函数,同样必须显式声明Student(){System.out.println("子类的无参构造函数");}
}
public  class Test {public static void main(String[] args) {int i=0;Student 有参 = new Student(i);Student 无参 = new Student();}
}

结果:

调用的是父类的有参构造函数
子类的有参构造函数

调用的是父类的无参构造函数
子类的无参构造函数

抽象类的有参与无参构造函数的研究相关推荐

  1. Java一种错误的实例化方法:在默认无参构造函数中进行实例化

    Java一种错误的实例化方法:在默认无参构造函数中进行实例化 代码如下: package Construction_test;public class A {static int i=0;public ...

  2. freecodecamp_为什么您一定要参与freeCodeCamp的一个研究小组

    freecodecamp by Frederick Ige 弗雷德里克·艾格(Frederick Ige) 为什么您一定要参与freeCodeCamp的一个研究小组 (Why you should d ...

  3. 解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法

    解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法 参考文章: (1)解决MVC运行controller的时候只有有参构造函数但是程序一定要走无参构造函数的方法 ...

  4. 关于lombok和mapstruct整合报无参构造函数错误

    调整lombok的版本,lombok使用1.16.10版本时可能会报无参构造函数的错误,将lombok的版本改为1.16.20

  5. java的无参构造方法_Java的无参构造函数用法实例分析

    本文实例讲述了Java的无参构造函数用法.分享给大家供大家参考,具体如下: 一 点睛 1 如果一个类没有定义任何构造函数,那么该类会自动生成1个默认的构造函数.默认构造函数没有参数. 2 如果一个类定 ...

  6. 无参构造函数和有参构造函数在创建对象时初始化的使用

    类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行. 构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置初始值. 默认 ...

  7. 构造代码块、静态代码块、无参构造函数和有参构造函数的执行顺序

    一直对构造代码块.静态代码块.无参构造函数和有参构造函数的执行顺序和执行次数混淆不清,所以记录一下它们的执行顺序以及执行次数.记录的不是很详细,留待补充. 代码: package com.yoko.t ...

  8. spring的Javabean的无参构造函数什么时候一到要写

    最近在用Spring依赖注入时,并使用setter时发现如果你在该类写了一个有参构造函数时,而不写无参构造函数时,运行是会报错未找到默认构造函数的. 加上一个无参构造函数就行了. 我们都知道Sprin ...

  9. java 无参构造函数的作用

    要是父类没有写构造函数,系统会默认隐式生成无参构造函数,如果父类写了有参构造函数,那么系统不会默认生成无参构造函数. java中,在执行子类的构造函数之前,如果没有用super()调用父类的构造函数, ...

最新文章

  1. 新技能 MyBatis 千万数据表,快速分页!
  2. 在PPT中通过插入重叠的图形获得新的图形
  3. “算法复杂度”——其实并没有那么复杂
  4. Spring AOP编程-传统aop开发总结
  5. vissim免修改时间工具_App闪退怎么办?免越狱如何安装未签名的App?
  6. vue.js 重定向 和 404 等等相关的问题?
  7. VS 2008的JavaScript代码提示功能 (学习老赵视频的笔记)
  8. 【思维】Kenken Race
  9. linux 检查ntp版本,查看linux安装ntp服务器配置
  10. 程序猿DD元旦送书:第二弹!
  11. python新闻标题分类_机器学习也会“标题党”?这个算法能根据标题判断新闻类别...
  12. 机器学习——统计学三大相关性系数(pearson、spearman、kendall)
  13. vue项目中eslint规则校验配置
  14. 离线地图开发之模拟迁徙(含源代码)
  15. excel表格计算年龄_在Excel中计算年龄
  16. Python + Tkinter:图片浏览器(二)
  17. js读Json,JSON与字符串转化,Java读JSON
  18. Django教程:第一个Django应用程序(1部分)
  19. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...
  20. 山东双数认证大数据产品登记条件

热门文章

  1. 安装虚拟环境virtualenv 适用于centos系统 2020
  2. python-虚拟环境-centos系统安装
  3. mysql-索引操作
  4. Cross Entropy Loss 交叉熵损失函数公式推导
  5. 【redis3在linux安装与基本操作】
  6. Kali Linux安装Remmina无法加载RDP插件
  7. DataDir and DirectoryFactory in SolrConfig
  8. linux文件三种时间及stat的用法
  9. 转载:Android Display架构分析--侧重高通平台
  10. Spring @Autowired Annotation教程