您的位置:首页 > 职场人生

黑马程序员_Java基础[8]_封装、构造函数、this

2014-04-29 19:01 351 查看
----------
android培训 、java培训
、期待与您交流! ----------

【【封装】】

就是隐藏对象的属性和实现细节,仅仅对外提供公共访问方式。

好处就是:将变化隔离,方便使用,提高重要性,提高安全性。

【封装的原则】:将不需要对外提供的内容都隐藏起来。

                                把属性都隐藏,提供公共方法对其访问。

封装是面向对象的三大特征之一,前面我们讨论的时候,其实就体现了封装

比如电饭煲具体有什么属性啊,什么主板啊,导线啊,是怎么做饭的等等,

我们不知道,都封装起来了,只知道它具备做饭和熬粥的功能。

方法/函数,就是最小的封装。

小提了一下修饰符,public,private,前者是公共的,后者是私有的。

私有的只在本类中有效。想要使用私有的属性,必须通过访问器来读写。

get读 对应读取的类型   set写无返回类型void。   

私有仅仅是封装的一种体现形式。而【不是说】封装就是私有

之所以提供对外访问方式,是因为在访问方式中加入逻辑判断等语句,对访问的数据进行操作,提高代码的健壮性。

----------------------------------------------------------------------------------------

【【构造函数】】【this关键字】

【特点】,
构造函数名与类名相同,不用定义返回值类型,不可以写return。
对象一建立,就会调用与之对应的构造函数。

【构造函数的作用】,

可以用于给对象进行初始化。

什么时候写构造函数:
分析事物时,该事物存在具备一些特性或者行为,那么就将这些内容定义在构造函数中。

(比如初始化的时候就要有姓名,而姓名是未知的,那么。。。。)

【小细节】:

当一个类中没有定义构造函数时,系统会默认添加一个空参数构造函数。

方便该类进行初始化。
当,在类中自定义构造函数后,默认的构造函数就没有了。

class stu{

            //stu(){};// 其实这里默认写了空参数构造函数               

}

构造函数间不可直接调用,调用必须用this。    (因为this是引用,)

[this 语句用于构造函数间的调用。]

如果要调用,比如下列【a】处

person(String name,int age){

this(name);// 等于  对象名.(name);  相当与 nw person(name);

this.age=age;

}
构造函数有时候对外可能只有一个,而内部却可能是多个,而内部就用到了很多调用,这得用this(),内部初始化作用。
this只能放在构造函数第一行。执行初始化。

构造函数具备函数的特性:重载。

也就是说,当我们定义一个类的时候,没有写构造函数

系统会默认添加一个空参数的构造函数,这种情况下该类才能new出对象,才能调用。

而当我们写一个参数的时候,系统就不再使用默认空参数构造函数,而使用我们定义的构造函数

构造函数可以有多个,但必须是同名,无返回类型(这不是废话嘛)这也就是重载
重载就是参数的不同,

比如【a】

person(){}//系统默认

person(String name){}//带一个参数

person(String name,int age){}//带两个参数

这种情况下,当我们new person()一个无参对象时,系统自动匹配默认构造函数,

如果new person("王小丫")系统会匹配一个参数的构造函数

如果new person("王小丫", 1 )系统会匹配两个参数的构造函数

【【构造函数】和【函数】区别】

构造函数 :同类名,无返回类型

       在对象一建立的时候就运行,给对象初始化

       一个对象建立,构造函数只运行一次

一般函数 :方法不同与类名,有返回类型,类名小写。

       对象调用的时候才执行,给是对象添加对象具备的功能。

       可以被该对象多次调用。

【】

老师提到:【构造代码块】

{

    System.out.println("没有名字的函数,开发不用,面试常考");

}

【作用】给对象进行初始化,而【且优先于构造函数执行】

【区别】,构造代码块是给【所有对象】进行统一初始化

      构造函数是给【对应对象】进行初始化。

构造代码块,可以调用所有构造函数的共性函数。比如上面的【a】代码,假设他们都有个哭的函数,

这个时候我们就不用分别调用,而在代码块中调用一次即可。

目前所学中,构造函数不能进行私有化,(private) 一私有, 对象就不能创建了,对象不能私有化。

                     

----------------------------------------------------------------------------------------
关于之前产生的误区:构造函数和get、set

------------------------------------------
构造函数是用来给类实例化的,

重写或者重载构造函数,确实可以在实例化过程中对成员属性赋值,

省去了get、set的麻烦。

其实get、set就是为了让其它对象可以操作这个类的对象的私有化的属性,

降低代码的耦合度,

----------------------------------------------------------------------------------------

【【this关键字】】

回顾一下:

成员变量,有初始值,不赋值可以调用,全类中可用。

局部变量,无初始值,不可以直接调用,且只作用与局部

person(String name){

      this.name=name;  //把传递过来的name赋值给引用对象的那么。

}

【this 2大作用】

1

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

2

用于   构造函数间   的相互调用。

this,为什么可以解决这个问题呢
this,代表在函数所属对象的引用。

【this,的应用】,当定义类中函数时,该函数内部,要调用该函数的对象时,

                  这时,用this来表示这个对象

                 但凡本类功能内部使用到了本类对象,都用this表示。

(记住:变量出现同名时,必须加this。 调用都是对象进行的。)

----------
android培训、 java培训
、期待与您交流!----------

黑马官网: http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: