第三章面向对象 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(); 运行上面这三句化最后的结果是red和4 读取第一句话后,第一句就成了垃圾,第二句也一样,读取到第三句时,就不一样了,它有了动作,而前两句都是属性 3.3封装(Encapsulation)封装:是指隐藏对象的属性和实现细节,进队外提供公共访问方式。 好处: 将变化隔离。 便于使用 提高重用性 提高安全性 封装原则: 将不需要对外提供的内容都隐藏起来。 把属性都隐藏,提供公共方法对其访问。
|