构造代码块


构造函数:

构造函数的作用: 给对应的对象进行初始化。


构造函数的格式:
    
    修饰符  函数名(形式参数列表){
        初始化的语句;
    }

构造函数要注意的细节:
    1.  构造函数是没有返回值类型的。    
    2.  构造函数的函数名必须 与类名一致。 
    3.  构造函数并不是由我们手动调用的, 构造函数是在创建对应对象的时候由jvm主动调用的(每创建一个对象就会调用一次构造函数)。
    4.  如果一个类没有显式的添加一个构造函数,那么java编译器会为该类添加一个无参的构造函数。
    5.  如果一个类已经显式的添加一个构造函数,那么java编译器则不会再为该类添加一个无参的构造函数。
    6.  构造函数是可以以函数重载的形式存在多个的。


疑问1 :我们现在知道创建对象的时候,jvm需要调用到对应的构造方法,那么以前我们没有学构造方法,那么
jvm还会调用到构造方法吗?而且构造方法存在吗?

存在构造方法的, 但是不是java虚拟机添加的,是java编译器添加的。


疑问2:java编译器添加的无参构造函数的修饰符是什么? 
    
    无参的构造函数的权限修饰符是与类名一致的。


如何反编译: 反编译可以使用jdk给我们提供的开发工具---》javap
    
    javap -c -l -private  class文件

需求: 使用一个java类描述一个婴儿。 

问题: 在现实生活中有两种婴儿,一出生就有姓名与身份证编号(白户),
       一种出生之后才有身份证编号与姓名(黑户)。

*/

//婴儿类
class Baby{
    
    int id; //身份证编号

    String name; // 名字
    
    //无参的构造函数
    public Baby(){
        System.out.println("无参的构造函数调用了..");
    }
     

    //带参构造函数
    public Baby(int i , String n){
        id = i ;
        name = n;
        System.out.println("两个参数构造函数调用了..");
    }

    public void cry(){
        System.out.println("哇哇哇....");
    }
}


class Demo2 {

    public static void main(String[] args) 
    {
        /*
        Baby b1 = new Baby(); //黑户
        b1.id = 110;
        b1.name= "狗娃";
        System.out.println("身份证:"+ b1.id+" 姓名:"+ b1.name);
        */
        new Baby();
        new Baby();
        Baby b2 = new Baby(110,"狗剩");    //白户
        System.out.println("身份证:"+ b2.id+" 姓名:"+ b2.name);
    
    }
}

构造代码块要注意的细节:


    1. 构造函数 的代码是位于成员变量的显式初始化 语句、构造代码块语句之后执行 的。
    2. 成员变量的显式初始化语句与构造代码块的语句的先后执行顺序是按照当前代码的顺序执行的。
    3. 成员变量的初始化语句和构造代码块的代码其实是在构造函数中完成的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值