(19)构造函数、构造代码块、this用法

一、构造函数特点

   ①函数名与类型相同②不用定义返回值类型③不可写‘return语句’

二、运行时间

    建立对象时,就运行与之对应构造函数

三、作用

     对对象初始化

四、细节

    当一个类没有定义构造函数时,系统会默认给该类加入一个空参数列表的构造函数

    当在类中自定义一个构造函数后,系统就不会给加构造函数了

五、构造函数和一般函数的区别

     ①写法不同

     ②构造函数在对象建立时,就运行,给对象初始化,而一般方法是对象调用才执行,是给对象添加对象具备的功能

     ③一个对象建立,构造函数只运行一次,而一般方法对象可以调用多次

六、什么时候定义构造函数

       当分析事物时,该事物必须具备的一些特性或者行为,那么僵这些内容定义在构造函数中

七、构造代码块

①作用:给对象初始化,优先于构造函数运行

②和构造函数区别:

   构造代码块是给不同对象进行共性初始化的

  构造函数是给对应的对象初始化的(重载)

{

        初始化语句;

}

八、举个栗子


	/*
	 * 定义构造函数
	 *复习重载
	 */
	public person() {
		System.out.println("A:name="+name+","+"age="+age);
	}
	public person(String name) {
		this.name=name;
		System.out.println("B:name="+name+","+"age="+age);
		
	}
	public person(String name,int age) {
		this.age=age;
		this.name=name;
		System.out.println("C:name="+this.name+","+"age="+age);//红字更有助于理解
                this.show();//加上this.更容易理解

 }
        public void show(){
                   System.out.println(this.name);
             }
   /*
     * 构造代码块:所有该类对象的共性
     * 无论有没有名字,年龄
     */
	{
		System.out.println("cry啦啦啦啦啦啦");
	}


九、this关键字

  ①this:看上去:用于区分局部变量和成员变量同名情况

  ②this为什么能够解决这个问题?确定当前本类对象

  ③this代表什么?本类对象。到底代表哪一个对象呢?this代表它所在函数所属对象的引用(简单说:哪个对象在调用这个函数,this就代表哪个对象)

  ④使用方法一:当有同名赋值时(成员和局部),必须得用this.,其他情况可以省略,写的话,更容易理解(还有使用方法二,见⑥)

   ⑤举个例子

  

/*
 * 需求:给人定义一个用于比较年龄是否相同的功能,也就是比较年龄是否相同
 *注意传参数,传一个即可。
 */
     public boolean equAge(person p) {
    	 
    	 if(this.age==p.age)
    		 return true;
    	 else
    		 return  false;
     }
调用:p1.equAge(p2);

⑥使用方法二:

当定义类中功能时,该函数内部要用到该函数的对象时,这时候就用this来表示这个对象

但凡本类功能内部用到了本类对象,则用this (九.⑤例子)

特别的,在构造函数中,有点特殊,如下面例子:this语句只能定义在构造函数的第一行,因为初始化要先执行



⑦this得错误用法:

public person() {
		this("hahha");
	}
	public person(String name) {
                 this();
                this.name=name;
	}
调用:
person p=new person();  会在构造函数中来回不断执行,不能这样做








                                    
posted @ 2017-07-05 21:11  测试开发分享站  阅读(133)  评论(0)    收藏  举报