JAVA之类,构造函数和构造代码块

类:

        在我们的日常生活中,对于事物的描述无非就是描述事物的属性和行为。如:人的身高,体重,年龄等称为属性,人会说话,会跑步,会做饭等等称为行为。

        而对于Java中的类,无非也是如此,包含了属性和行为。

类的定义:

  • 属性:对应类中的成员变量
  • 行为:对应类中的成员函数

例如:

public class User {
    public User() {
    }
    public User(String username, int age) {
        this.username = username;
        this.age = age;
    }
    private String username;
    private int age;
    public String say(String str){
        return  str;
    }
    public void sleep(){

    }
}

分析:

        首先创建了一个User类,其中用户名(username),年龄(age)是User类的成员变量。说话(say),睡觉(sleep)是User类的行为,而其余两个则是User类的无参构造器和有参构造器。

这里我们提到了一个成员变量,那么这个成员变量跟我们曾几何时学习的局部变量有什么关系呢?

成员变量和局部变量的关系:

成员变量:

  • 成员变量直接定义在类中。
  • 成员变量在这个类中有效。
  • 成员变量随着对象的建立而存在,消失而消失,存在于对象所在的堆内存中。
局部变量:
  • 局部变量定义在方法中,参数上,语句中。
  • 局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
  • 局部变量存在与栈内存中,随着所属区域的运行而存在,结束而释放。

构造函数定义:用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种。

特点:

  • 该函数的名称和所在类的名称相同。
  • 不需要定义返回值类型。
  • 该函数没有具体的返回值。
注: 所有的对象创建时,都需要初始化才能使用

注意事项:一个类在定义时,如果没有定义过构造函数,那么该类中会自动生成一个空参数的构造函数,为了方便该类创建对象,完成初始化。如果在类中自定义了构造函数,那么默认的构造函数就没有了。

一个类中,可以有多个构造函数,因为它们的函数名称是相同的,所以只能通过参数列表进行区分。所以,一个类中如果出现多个构造函数,它们的存在是以重载体现的。 


上面具体的介绍了一下构造函数的定义,特点等等。但是同样还有很多疑问,如他和一般函数有那些区别呢和构造代码块有什么区别呢等等问题。


构造函数和一般函数的区别:

  • 构造函数是在对象创建时,被调用,用户对象的初始化。而且对象的初始化动作只执行一次。
  • 一般函数,是对象创建完成后,需要调用才执行,可以被调用多次。
  • 构造函数和一般函数的定义格式不同。
构造代码块和构造函数的区别:

  • 构造代码块是给所有的对象进行初始化,也就说,所有的对象都会调用一个代码块。只要建立对象,就会调用这个代码块。
  • 构造函数是给与之对应的对象进行初始化,它具有针对性。
问: 构造代码块和构造函数的执行顺序是什么?

以一个简单的案例展示一个它们的执行顺序:

User类:

public class User {
    private String username;
    private int age;
    {
        System.out.println("构造代码块");
    }

    public User() {
        System.out.println("无参构造方法");
    }
    public User(String username, int age) {
        this.username = username;
        this.age = age;
        System.out.println("有参构造方法");
    }
}

测试类:

    public static void main(String[] args) {
        User u = new User();
        User user = new User("张三",18);
    }

执行结果:

构造代码块
无参构造方法
构造代码块
有参构造方法

结果分析:通过案例的验证,我们确定了 构造代码块在构造方法之前执行构造代码块在每次创建对象时都会执行构造方法之被调用一次,而且是针对性的


总结:书读百遍其义自见。只有基础扎实了,才能勇攀高峰。加油!!!加油!!!加油!!!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值