构造函数,This关键字

构造函数:

即构建创造对象时调用的函数。在new的时候自动执行,给对象进行初始化。创建对象都必须要通过构造函数初始化。(有参和无参)

一个类中如果没有定义过构造函数,那么类中会有一个默认的空参数构造函数。

特点:1.函数名与类名相同。

         2.无返回值

实例变量的默认值:

  原始数字类型的实例变量默认值为0,布尔型变量为false,引用变量为null。

例:

 

class A
{
    private int i;
    private int j;
    public A()
    {
        //System.out.printf("嘿嘿!\n\n");
    }
    
    //构造函数        
    public A(int a, int b)
    {
        i = a;
        j = b;
        System.out.printf("无参构造函数被调用了!\n");
    }
    
    public void show()
    {
        System.out.printf("i = %d, j = %d\n", i, j);
    }
}

class TestConst_2
{
    public static void main(String[] args)
    {
        A aa = new A(1, 2); //在定义的同时进行初始化,可用构造函数来完成。
        A aa3 = new A();        
    }
}

 

 

 


 

This关键字:

当成员变量和局部变量重名,可以用关键字this来区分。

 

this : 代表对象。代表哪个对象呢?当前对象。

          this就是所在函数所属对象的引用。

          简单说:哪个对象调用了this所在的函数,this就代表哪个对象。

 

this也可以用于在构造函数中调用其他构造函数。

注意:只能定义在构造函数的第一行。因为初始化动作要先执行。

例:

class Person
{
    private String name;
    private int age;    
    Person()
    {       
        name = "baby";
        age = 1;
        System.out.println("person run");
    }   
    Person(String name) 
    {
        this();
        this.name = name;
    }
    Person(String name,int age)
    {
        this.name = name;
        this.age = age;     
    }
    public void speak()
    {
        System.out.println(this.name+":"+this.age);
    }

    /*
    判断是否是同龄人。***(思想)只用了一个参数***
    */
    public boolean compare(Person p)
    {
        /*
        if(this.age==p.age)
            return true;
        else
            return false;
        */
        return this.age==p.age;
    }

}

class ThisDemo 
{
    public static void main(String[] args) 
    {

        Person p1 = new Person("aa",30);//
        Person p2 = new Person("zz",12);

        p2.compare(p1);
//      new Person();
//      Person p = new Person("旺财",30);
//      p.speak();
//      Person p1 = new Person("小强");
//      p1.speak();
    }
}

 

posted @ 2017-03-18 11:02  Kkky  阅读(453)  评论(0编辑  收藏  举报