第四讲:面向对象3.面向对象3.1面向对象的概念3.1.1理解面向对象面向对象是相对面向过程而言,面向对象和面向过程都是一种思想,面向对像将功能封装进对象,强调具备了功能的对象。没有初始化对象,即是没有实例化,系统默认姓名为空值,年龄是03.1.2面向对象的特点1.是一种符合人们思考习惯的思想2.可以将复杂的事情简单化3.将程序员从执行者转换成了指挥者4.完成需求时:先要去找具有所需的功能的对象来用;如果该对象不存在,那么创建一个具有所需功能的对象;简化开发并提高复用。P1就是一个标识符,没有实际意义,标识符指向对象在堆里面的地址。3.1.3面向对象开发、设计、特征1.开发的过程:实际就是不断的创建对象、使用对象,指挥对象做事情的过程。2.设计的过程:其实就是在管理和维护对象之间的关系。3.面向对象的特征:封装、继承、多态3.2类与对象的关系Java中描述事物通过类的形式体现,类是具体事物的抽象。对象即是该类事物实实在在存在的个体。3.2.2当一个程序中有多个类时,保存时文件名必须和main所在的类的类名一致,执行时也必须执行main所在的类的类名,不能执行其他类的类名,否则会出错。3.2.3成员变量和局部变量的区别1.成员变量成员变量定义在类中,在整个类中都可以被访问成员变量随着对象的建立而建立,存在于对象所在的堆内存中。成员变量有默认初始化值。2.局部变量:存在栈内存中,没有默认初始化值。定义在局部范围内:如函数内,语句内。作用的范围结束,变量空间会自动释放。3.2.5对象内存结构3.2.6匿名对象1.匿名对象是对象的简化形式。2.匿名对象的两种使用情况(1)当对象方法仅进行一次调用的时候(2)匿名对象可以作为实际参数进行传递classA{privateintx=3;publicstaticvoidmain(String[]args{newA(.func(newA(;//请求解释这句}publicvoidfunc(Aa){//请求解释这句,A,a分别代表什么System.out.println(a.x;//请求解释这句}}1.newA(创建了一个匿名的对象(你可以想象为一个孩子出生了,但没有名字),后面的.func(newA(是该匿名对象的方法(不管孩子有名没名,他都有方法的是吧..),该方法的传递的参数是newA(,注意这里的newA(跟前面那位没名的孩子不是同一人,只不过他也没有名字而已。。2.这一局就是声明方法func(),方法是参数是类A的对象,所以这里的A是指类A,而a是他的一个对象(注意这里是形参,没有具体创建对象a)。。3.a是A的实例,他就是有名的孩子了,他的名字叫a,也有属性x,所以该剧输出为3,因为x初始化为3了,所有的A类的实例的x属性初始值都是3.。Duixiangdx=newDuixiang(;dx.GM(newPerson(;//匿名对象作为实参相当于有名得时候的:Personp=newPerson(;dx.GM(p;3.3封装-提高代码的安全性封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。好处:将变化隔离;便于使用;提高重用性;提高安全性。封装原则:(1)将不需要对外提供的内容都隐藏起来;(2)将属性封装3.4.1private(私有关键字1.private是一个权限修饰符,用于修饰成员(成员变量,成员函数),被私有化的成员只在本类中有效。例:privateintage;private关键字把属性age私有化了,只能在本类中可以访问属性age。2.常用一:将成员变量私有化,对外提供对应的set,get方法对其进行访问。提高对数据访问的安全性。3.4.2构造函数(构造器)特点:(1)函数名与类名相同(2)不用定义返回值类型(3)不可以写return语句作用:(1)初始化对象3.5this关键字哪个对象去调用这个构造函数,this就是哪个对象。例:Booleanresult=p1.compare(p2;P1在调用compare函数,因此this指代p1,而不是p2.特点:this代表其所在函数所属对象的引用,也就是this代本类对象的引用。当在函数内需要用到调用该函数的对象时,要用this。错误分析:语法没错,却没有实现对象的初始化。3.6static关键字1.好处:(1)节约空间。涉及国籍等有共性的东西,就用static。(2)可以直接被类名调用2.静态的特点:共享!被所有对象所共享(1)随着类的加载而加载;(2)优先于对象存在;(3)可以直接被类名所调用;(4)(5)被所有对象共享。3.类变量和实例变量的区别:(1)...