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

黑马程序员--面向对象之封装

2015-07-21 00:53 387 查看




  ---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

1、面向对象

1.1对象:其实就是一个个体[实体](个体就是指定生活中具体的一类事物)
1.2面向对象:其实也是一种解决问题的方案。在遇到需求,首先不是去分析怎么去解决需求中的功能,而是去找有没有已经存在解决需求中问题的功能(这些解决问题的功能封装在类中),如果有,就直接使用已经存在的功能;如果没有,就创建一个新的类,在类中书写解决问题的功能(函数)。在面向对象的思想中,开发人员属于调用者(指挥者)
1.3结论:面向对象其实就是面向类(类中封装了解决问题的功能)。面向对象是基于面向过程的,两者之间没有冲突。在开发中,面向对象的思想和面对过程的思想通常是配合使用。

2、面向对象举例(组装新电脑)

2.1使用面向过程的思想解决组装电脑:
  1.在网络上查找电脑硬件的信息
  2.去电脑城中各个商家咨询
  3.选择自己中意的商家,去购买电脑
  4.监控整个电脑的组装流程
  5.付钱,把电脑扛回家。
  所以使用面向过程的思想去装电脑,整个过程需要亲力亲为,比较累。
2.2使用面向对象的思想解决组装电脑:
   1.找一个懂电脑的人,告知对电脑的需求
   2.给钱,等待电脑回来
   使用面向对象的思想去装电脑,整个流程瞬间变得简单了。

3、对象在代码中的体现(描述汽车这类事物)

 


public class CarDemo {
public static void main(String args[]){
//创建汽车对象
Car c=new Car();
//访问汽车对象下的成员变量
c.number=4;
c.color="黑色";
//访问汽车对象下的成员函数
c.run();
}
 
}
//使用class来描述汽车
class Car{
//使用变量来描述汽车的特征
int number;
String color;
//使用函数来描述汽车的行为
void run(){
System.out.println(number+"个轮子的"+color+"汽车在行驶中......");
}
}
小结:
     在java中使用class描述事物。
     使用变量描述事物中的特征(也称为:成员变量或属性)
     使用函数描述事物中的行为(也称为:成员函数或方法)

4、类和对象的区别:

1、 类是用来描述事物的。(通常描述的是一类事物中共同具有特征和行为)
2、 对象是所描述的事物创建出来的一个具体的实体。
3、 先有类描述事物,再有类所创建出来的对象。

5、局部变量和成员变量的区别:


 
1、 从定义上来讲:
局部变量通常是定义函数中,属于函数的
成员变量是定义类中,属于类的
2、 从内存存储上来讲:
局部变量是随着函数的入栈而存在,局部变量是存储在栈内存中
成员变量是随着对象的创建而存在,成员变量是存储在堆内存中
3、 从调用(使用)上来讲:
局部变量可以函数中直接使用
成员变量必须是在创建完对象后,通过对象名来调用。
4、 从存活时间(生命周期)上来讲:
局部变量是随着函数的入栈和出栈来计算存活时间
成员变量是随着对象的创建和销毁来计算存活时间
5、 从初始值上来讲:
局部变量在定义时必须指定初始值(不具备默认值)
成员变量在定义时可以指定初始值,也可以使用默认值
 

6、匿名对象

6.1  匿名对象:就是指没有名字的对象。
6.2  匿名对象的局限性:在使用匿名对象时,如果需要访问(使用)所创建对象中的多个成员(包括成员变量、成员函数)时,此时使用匿名对象就无法操作同一个对象。
结论:当创建的对象要多次操作对象中的成员时,就不能使用匿名对象,在只需要访问所创建对象中一个成员时,可以使用匿名对象。

7、 封装

Java中面向对象,有三大特征:封装、继承、多态
 
7.1java中封装的体现:
1.函数:把一些相同的代码抽取封装。提高复用性
2.类:把一些相同的特征、行为封装。提高复用性、提高安全性
7.2封装的好处:
1.提高程序的复用性、安全性
2.可以隐藏事物的细节,需要对外提供一个可以访问这些隐藏细节的方式(函数)
7.3 private关键字:在java语言中,隐藏事物的细节就是使用关键字private。


 
7.4小结:1. private关键字:表示私有的。 被private修饰的成员只能在当前类中使用。2. public关键字:表示公共的。 被public修饰的成员可以在任何地方使用。java中的封装:就是把成员变量私有化,为每一个成员变量提供public函数(赋值、取值),可以让外部程序间接访问私有的成员变量。在使用private隐藏成员变量后,需要对外提供两个函数:赋值[setter]、取值[getter]赋值,在开发中通常是使用setXxx() ,其中 Xxx是成员变量的名字,首字母大写取值,在开发中通常是使用getXxx()。

8、构造函数

8.1什么构造函数:在创建对象时,会自动被调用(被JVM调用)的函数,称为构造函数(构造方法)
8.2构造函数的体现:
1.构造函数的名字和类名一模一样。(和类名相同)
2.构造函数在书写时,没有返回值类型(连void都不书写)。[不书写void是为和普通函数区分]
3.构造函数中没有返回值

8.3 默认构造函数:当一个类中,如果已经存在构造函数,在使用javac命令编译时,JVM不会添加默认的构造函数(类中有构造函数,JVM就不会自动添加,类中没有构造函数,JVM就会自动添加默认构造)
8.4构造函数和一般函数(成员函数)的区别:
1.从调用上来讲:一般函数,是在创建完对象后,使用对象名调用(创建对象后,对象名调用)构造函数,是在创建对象时,由JVM自动调用 (创建对象时,JVM调用)
2.从调用次数上讲:一般函数,在创建完对象后,可以使用对象名多次调用(多次调用)构造函数,在创建对象时,由JVM调用一次(一次调用)
3.从作用上来讲:一般函数,用来描述事物的行为(功能)。构造函数,用来初始化对象使用的。

                         ----------------ASP.Net+Unity开发、.Net培训、期待与您交流! --------------

                         详情请查看:www.itheima.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: