【【封装】】
就是隐藏对象的属性和实现细节,仅仅对外提供公共访问方式。
好处就是:将变化隔离,方便使用,提高重要性,提高安全性。
【封装的原则】:将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
封装是面向对象的三大特征之一,前面我们讨论的时候,其实就体现了封装
比如电饭煲具体有什么属性啊,什么主板啊,导线啊,是怎么做饭的等等,
我们不知道,都封装起来了,只知道它具备做饭和熬粥的功能。
方法/函数,就是最小的封装。
小提了一下修饰符,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