构造函数与this

class Person
{
    private int age;
    String name;
    Person() //Person类的构造函数
    {
        age = 0;
        name = "baby";
        System.out.println(name+ " " +age);
    }
    Person(String name, int age)
    {
        this.name = name;
        this.age = age;
        System.out.println(name+ " " +age);
    }
    public void setAge(int age)
    {
        this.age = age;
    }
    public int getAge()
    {
        return this.age;
    }

    void show()
    {
        System.out.println(name+ " " +age);
    }
}
在示例代码中,Person()即为Person类的构造函数。当定义一个类的时候,即使没有显式的写出构造函数,程序也会默认加载构造函数。 

构造函数的作用就是初始化对象。当上述代码中没有构造函数的时候,创建对象并打印,只会显示变量在创建时的初始化值:“null 0”。 

而当我们想在创建对象时,就让对象具备一定的值,这时就要用到构造函数。注意,如果Person()中为空,就是所谓的默认构造函数。 

上面代码运行的结果就是在控制台打印:“baby 0”。   

由此可以看出构造函数的特点:函数名与类名相同;不需要定义返回值类型;没有具体的返回值。 

构造函数与普通函数的区别在于:构造函数随着对象的创建而运行,对对象进行初始化。并且每个对象只能调用构造函数一次; 

而普通函数只有在对象调用它时,才会被执行。并且每个对象可以调用普通函数多次。 

当创建一个对象时就希望它已经被赋值,这时就可以重载构造函数。 

Person p = new Person("张三",20); 

此时调用的构造函数就是:Person(String name, int age)。 

这就意味着,新建对象时可以根据传入的参数不同而调用不同的构造函数。

在上述代码中,age是用private修饰的。那么则意味着age是不能直接被Person类之外的变量所访问的。所以要在类中另外定义函数接口,以调用age变量。
public void setAge(int age)
{
    this.age = age;
}
在函数体中“this.age = age;”第一个“this.age”指的是用Person类创建的对象调用的age;第二个“age”指的是参数传入的age。 

通俗的说,哪个对象调用了this所在的函数,this就代表哪个对象。 

Person p = new Person("张三",20);此时,this就代表的是P。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值