Java构造方法

构造方法是用于初始化一个新建的对象。

普通构造方法

  • 方法名与类名相同
  • 无返回类型
  • 子类不能继承父类的构造方法
  • 不能被static、final、abstract修饰(有final和static修饰的是不能被子类继承的,abstract修饰的是抽象类,抽象类是不能实例化的,也就是不能new)
  • 可以被private修饰,可以在本类里面实例化,但是外部不能实例化对象(注意!!!)
    参考文档:https://zhidao.baidu.com/question/502830408.html
 public class A{int i=0;public A(){i=2;}public A(int i){this.i=i;}}

默认构造方法

如果没有任何的构造方法,编译时系统会自动添加一个默认无参构造方法

  1. 隐含的默认构造方法
 public A(){}
  1. 显示的默认构造方法
 public A(){System.out.print("显示的默认构造方法")}

重载构造方法

比如原本的类里的构造方法是一个参数的,现在新建的对象是有三个参数,此时就要重载构造方法

当一个类中有多个构造方法,有可能会出现重复性操作,这时可以用this语句调用其他的构造方法。

public class A{private int age;private String name;public A(int age,String name){this.age=age;this.name=name;}public A(int age){this(age,"无名氏");//调用 A(int age,String name)构造方法}public A(){this(1);//调用 A(int age)构造方法}public void setName(String name) {this.name=name;}public String getName() {return name;}public void setAge(int age) {this.age=age;}public int getAge() {return age;}
}
A a=new A(20,"周一");
A b=new A(20);
A c=new A();
String name = a.getName();
String name1 = b.getName();
int age = c.getAge();
System.out.println(name);
System.out.println(name1);
System.out.println(age);

java子类构造方法调用父类构造方法

首先父类构造方法是绝对不能被子类继承的。

子类构造方法调用父类的构造方法重点是:子类构造方法无论如何都要调用父类的构造方法
子类构造方法要么调用父类无参构造方法(包括当父类没有构造方法时。系统默认给的无参构造方法),要么调用父类有参构造方法。当子类构造方法调用父类无参构造方法,一般都是默认不写的,要写的话就是super(),且要放在构造方法的第一句。当子类构造方法要调用父类有参数的构造方法,那么子类的构造方法中必须要用super(参数)调用父类构造方法,且要放在构造方法的第一句。

当子类的构造方法是无参构造方法时,必须调用父类无参构造方法。因为系统会自动找父类有没有无参构造方法,如果没有的话系统会报错:说父类没有定义无参构造方法。

当子类构造方法是有参构造方法时,这时就会有两种情况。
第一种:子类构造方法没有写super,也就是说你默认调用父类无参构造方法,这样的话就和子类是无参构造方法一样。
第二种:子类构造方法有super(参数)时,就是调用父类有参构造方法,系统会找父类有没有参数一致(参数数量,且类型顺序要相同)的有参构造方法,如果没有的话,同样也会报错。
但是这里会遇到和重载构造方法this一样问题,一个参数的构造方法可以调用多个参数构造方法,没有的参数给一个自己定义值也是可以的。

Java构造方法和子类构造方法相关推荐

  1. java 构造方法_Java构造方法和子类构造方法

    Java构造方法 构造方法是用于初始化一个新建的对象. 普通构造方法 -----方法名与类名相同 -----无返回类型 -----子类不能继承父类的构造方法 -----不能被static.final. ...

  2. Java中父类构造方法对子类构造方法的影响(不是一句话可以说清的)

    推荐的阅读顺序是:先看Test类,再根据提示看父类和子类 让我们通过代码来了解一下: 创建一个父类: public class Father{public Father(){super();//默认调 ...

  3. java中,子类初始化时一定要调用父类的构造方法,不调用行吗?

    一定会调用 原因是这样的: 因为子类继承了父类,那么就默认地含有父类的公共成员方法和公共成员变量,这些方法和变量在子类里不再重复声明.如果你初始化子类的时候,不初始化父类,那么你通过子类调用父类方法或 ...

  4. java父类与子类的构造方法_java中的加载顺序以及父类与子类的构造方法 | 学步园...

    public class fatt { public static void main(String[] args) { animal a=new cat(9); } } class animal{ ...

  5. Java中关于子类调用父类无参还是有参构造方法的各个类型

    1.子类和父类都定义了带参和无参构造方法,且在子类中第一行写了super(xx);并且测试类里面实例化的是子类的带参构造方法,那么,此时不会先调用父类的无参构造方法,而是先调用父类有参构造方法再调用子 ...

  6. java中子类构造方法和父类构造方法

    有继承关系的前提下,子类一定会调用父类的构造方法.因为构造方法是用来进行初始化的,子类要初始化,必须先使用父类的构造方法. 以下情形参考: 1.当子类不重写构造方法,子类默认拥有一个无参构造方法,但是 ...

  7. java无参构造有参构造_Java ——补充:构造方法 super()与构造方法 无参 有参构造方法 this()与构造方法...

    参考文章: 构造方法在new的时候自动执行.且只执行一次.new一次执行一次 每个类都有构造方法,即使不写也有,编译时javac会自动检查类是否有构造方法,如果有,就执行,没有就自动添加一个 如果父类 ...

  8. Java里的构造函数(构造方法)的特点及作用

    Java里的构造函数(构造方法) 一.构造函数(构造方法)定义 构造函数是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中. 二. ...

  9. 子类调用父类构造方法 java_JAVA子类调用父类构造方法

    父类的构造方法不能被子类继承.以下语句中MyException类继承了java.lang.Exception类. public class MyException extends Exception{ ...

最新文章

  1. java 扩展类加载器_java实现自定义类加载器
  2. OpenCV添加(混合)两个图像
  3. asp.net发布网站的详细步骤
  4. 第一章:1-01、计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
  5. java手机大头_Java也强大:
  6. 聚簇索引和非聚簇索引的原理
  7. iqooneo5桌面原子组件教程分享
  8. Datawhale组队学习周报(第039周)
  9. 解决Tomcat严重: Parse error in application web.xml file at jndi:/localhost/ipws/WEB-INF/web.xml java.lan
  10. qq邮箱怎么发送html文件在哪里,QQ邮箱怎么发送文件夹
  11. 2017普实软件迎新年会报道
  12. Python第一次爬虫三部曲 wallhaven壁纸网站(requests库,re正则库)一看就会
  13. PERL常见问题解答--FAQ(4)--Data: Strings
  14. 动态平衡网格交易_本周懒人大树数字币网格价值投资与主流币云算力挖矿实盘记录(12.19日更新)...
  15. 介绍一下Token?
  16. 微信小程序获取用户信息相关问题
  17. 10 个免费的网络监控工具
  18. OA选型指南:华天动力OA与致远OA
  19. deepinv2 添加打印机_Deepin环境下Brother 打印机网络打印驱动安装步骤的图解
  20. 数据库设计的六个基本步骤

热门文章

  1. Linux 操作系统 Centos7.6安装教程详细Linux系统安装磁盘分区IP配置SSH互信NTP时间服务器关闭图形界面关闭防火墙配置hosts文件
  2. 标点符号折磨咱小老百姓
  3. 安卓模拟器修改hosts文件
  4. 动态规划经典题目:最大连续子序列和、最大不连续子序列和
  5. 接口测试-header
  6. c#之MVC ---初始
  7. NIO与Socket笔记 :Selector 类的使用
  8. JavsScript牛客网华为机试(11-20)题解
  9. 【电气专业知识问答】问:断路器运行中发生异常情形时如何判别和处理?
  10. Fluentd学习笔记