什么是Java的构造方法?

什么是构造方法?
JAVA中每个实体类都有自己的构造方法, 每个新建实体类会默认有一个无参的构造方法。当你重写了无参构造或者有参构造时, 默认的无参构造就会无效

构造方法的作用是什么?
构造方法就是当你创建了这个实例的时候(例如new对象), 他会自动调用的方法

构造方法的调用顺序是怎样的?
若一个子类继承了一个父类, 并且这两个类都有静态的代码块,顺序应该是:
父类的静态代码块—>子类的静态代码块—>父类的无参构造—>子类的无参/有参构造

这里需要注意:

  • 静态代码块只初始化一次
  • 最后一步调用的是有参构造还是无参构造,取决于创建实例的方式(下面有详细代码示例)

-----以下为代码示例以及总结-----

代码示例:

-----先让我们准备做示范的实体-----

//父类

    public class TestA {

        static{
            System.out.println("我是A的静态代码块");
        }

        TestA(){
            System.out.println("我是A的无参构造方法");
        }

        TestA(int a){
            System.out.println("我是A的有参构造方法");
        }

    }

//子类

    public class TestB extends TestA{
        static{
            System.out.println("我是B的静态代码块");
        }

        TestB(){
            System.out.println("我是B的无参构造方法");
        }

        TestB(int b){
            System.out.println("我是B的有参构造方法");
        }
    }

-----接下来开始测试调用顺序-----

//调用者一, 用于测试存在父子类关系的构造顺序调用情况

    public static void main(String[] args){
        TestB testB2 =new TestB(2);// 使用了有参构造
    }

//调用者一的输出结果
我是A的静态代码块
我是B的静态代码块
我是A的无参构造方法
我是B的有参构造方法

//调用者二, 用于测试不存在父子类关系的构造顺序调用情况

    public static void main(String[] args){
        TestA testA1 =new TestA();//使用了无参构造
        TestA testA2 =new TestA(1);//使用了有参构造
    }

//调用者二的输出结果
我是A的静态代码块
我是A的无参构造方法
我是A的有参构造方法

总结:

  • 类创建时,默认会有无参构造, 重写了构造方法,默认的无参构造就会失效
  • 构造方法调用顺序为爷爷---->爸爸---->本身, 如果有静态的先运行静态的
  • 静态代码块只初始化一次(因为他存在虚拟机的方法区中,后期再做记录)
  • 当你重写了这个类的有参构造时,最好也重写他的无参构造,否则微服务调用可能会出现问题

友情提示:
我写博客不喜欢做过多赘述, 所以建议小伙伴从头到尾看仔细一点,切莫跳读

落款

全部作品都是自己手敲文字,绝非复制粘贴
关注小凡,欢迎大家与我一起讨论技术,一起学习

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值