黑马程序员技术交流社区

标题: 黑马程序员——java学习笔记——面向对象(1) [打印本页]

作者: luorenyu    时间: 2015-8-3 22:28
标题: 黑马程序员——java学习笔记——面向对象(1)
第三章面向对象
3.1面向对象概念3.1.1理解面向对象
要点:
l  面向对象是相对面向过程而言
l  面向对象和面向过程都是一种思想
l  面向过程
强调的是功能行为
l  面向对象
将功能封装进对象,强调具备了功能的对象。
l  面向对象是基于面向过程的。
图解面向对象与面向过程
file:///C:\Users\luore\AppData\Local\Temp\msohtmlclip1\01\clip_image002.jpg
生活实例:
人开门(名词提炼法寻找面向对象)
{
       开门(门)
{
       门,开{}
}
}
{
       {}{操作门轴}
}
总结:
面向对象的三大特征:封装、继承、多态
以后的开发,其实就是在找对象使用,没有对象就创建一个对象。
开发的过程就是:找对象——》建立对象——》使用对象——》维护对象的关系。
3.2类和对象的关系3.2.1类与对象的关系(实例)
生活实例:
现实生活中的对象:张三、李四。
想要描述,提取对象中共性内容,对具体的抽象化。
描述时:这些对象的公共性有,姓名、年龄、性别、学习java的功能
映射到java中,描述就是class定义的类。
具体对象就是对应java在堆内存中用new建立的实体
类:就是对现实生活中事物的描述。
对象:这类事物实实在在存在的个体
实例讲解:
file:///C:\Users\luore\AppData\Local\Temp\msohtmlclip1\01\clip_image004.png
可以理解为:
类就是图纸
汽车就是堆内存中的对象
——描述事物无非就描述事物的两部分:第一是他的属性;第二是他的行为
汽车描述其颜色和轮胎数
java语言来描述:
class Car
{
         //描述颜色
         Stringcolor="颜色";
         //描述轮胎数
         intnum =4
         //运行行为,
         voidrun{}
         {
                   System.out.println(color+".."+num);
         }
}
//总结:属性对应着类中的变量,行为对应的类中的函数(方法)。
/*
其实定义类,就是在描述事物,就是定义事物的属性和行为,
属性和行为共同成为类中的成员(成员变量和成员方法)
*/
//接下来生产汽车
class CarDemo
{
         publicstatic void main(String[]args)
         {
                   //生产汽车,在java中通过new操作符来完成。
                   //其实就是在堆内存产生一个实体。
                   Carc=new car//就是一个类类型变量,记住,类类型变量指向对象
                   //需求:将已有的车的颜色改成蓝色,就需要只会该对象做事情,
                   //java中的指挥方式是:对象.对象成员
                   c.color="blue";
                   c.run();
                   Carc1=new Car()
                   c1.run();
         }
结合下图进行理解:图左框为栈内存,图右框为堆内存。
}file:///C:\Users\luore\AppData\Local\Temp\msohtmlclip1\01\clip_image006.jpg
总结:用new来建立对象,对象的特点在于封装数据,数据包含着属性和行为
3.2.2成员变量和局部变量
成员变量和局部变量
1.        作用范围不同
成员变量:作用于整个类中,
局部变量:作用于函数中,或者语句中,
2.        在内存中的位置不同
成员变量:在堆内存中,因为对象的存在,才在内存中存在。
局部变量:存在栈内存中,
3.2.3匿名对象
l  匿名对象是对象的简化形式
l  匿名对象两种使用情况
a、当对对象方法仅仅进行一次调用的时候,可以用匿名对象来完成,这样写比较简化
但,如果对一个对象进行多个成员调用,必须给这个对象起个名字。
b、匿名对象可以作为实际参数进行传递
//Car.c=new Car();
                   //c.num=5;
上面两句话可以简写成一句
                   newCar().num=5;/ ——这就是匿名对象(anonymous object
1)        new Car().num=5;
2)        newCar().color="blue";
3)        new Car().run();
运行上面这三句化最后的结果是red4
读取第一句话后,第一句就成了垃圾,第二句也一样,读取到第三句时,就不一样了,它有了动作,而前两句都是属性
3.3封装(Encapsulation
封装:是指隐藏对象的属性和实现细节,进队外提供公共访问方式。
好处:
         将变化隔离。
         便于使用
         提高重用性
         提高安全性
封装原则:
         将不需要对外提供的内容都隐藏起来。
         把属性都隐藏,提供公共方法对其访问。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2