初识构造函数

“部分内容摘自《java语言程序设计》,郭克华主编,page 77”

一、何为构造函数

——构造函数也是一种特殊方法,避免创建对象后,忘记对对象进行初始化,是人为创造的。它规定了对象初始化必须完成。

二、格式

类名 对象名 = new 类名(传参)

定义时需要满足:函数名称与类名相同;不含有返回值

三、实例

/**
 * 构造函数演示
 */
class Customer {
    String name;
    String sex;
    int age;
    void init(String name,String sex,int age){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    void display(){
        System.out.println("name="+name);
        System.out.println("age="+age);
        System.out.println("sex="+sex);
    }
}

public class ConstructorTest{
    public static void main(String[] args){
        Customer customer = new Customer();
        customer.init("张思","女",89);
        customer.display();
    }
}

  上面代码可以写成:

/**
 * 构造函数演示
 */
class Customer {
    String name;
    String sex;
    int age;
    Customer(String name,String sex,int age){
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
    void display(){
        System.out.println("name="+name);
        System.out.println("age="+age);
        System.out.println("sex="+sex);
    }
}

public class ConstructorTest1{
    public static void main(String[] args){
        Customer c = new Customer("张三","男",13);
        c.display();
    }
}

注意:上面的this,避免了函数变量和成员变量的名字重复,不加会屏蔽成员函数中的变量。this表示该变量属于类中的变量,而非成员变量(是局部变量)。此处可以理解为对本对象的引用,“本对象自己”

如果不加:输出如下:

 可以看到初始值为null,false,0。

构造函数,idea上显示如下:

这句代码:

Customer customer = new Customer("张思","女",89);实际上是调用了构造 函数。

扩展,静态变量:

 传入color的实参,赋值情况如下如下,(static关键字,静态变量存储在区别于成员变量的区域,全局区)

 

 内存存储位置说明:

栈:成员变量,参数,对象引用(编译器自动分配,程序结束回收内存)

堆:所有new出来的对象(程序员主动申请,需要主动释放)

 

静态区(全局区):存放static修饰的静态变量(只需创建一次,下次可以直接引用),类里面定义的 成员变量——共享 

方法区+常量池:???待补充

本例中,定义了两个类,Customer和ConstructorTest,编译后会产生两个 .class文件。当然也可以把两个类放在不同文件中。

对于 Demo demo = new Demo(); 的内存分析见下链接

http://www.cnblogs.com/java-sky/p/7200085.html

四、注意

(1)、构造函数可以被重载。一个类可以定义多个构造函数。实例化对象时,根据具体情况,调用不同的构造函数。

(2)、若没有定义构造函数,则系统默认定义一个空构造函数,无参。初始化对象直接new。

(3)、一个类创建,构造器自动调用,不同位置的参数代表不同属性。在对象的生命周期中,构造函数只会调用一次。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值