第3章面向对象编程(基本语法)主讲:王捷E-Mail:30770528@qq.comJava程序设计第3章面向对象的编程(基本语法)第3章面向对象的编程(基本语法)3.1面向对象程序设计概述3.2类的定义3.3类中的方法3.4方法中的参数传递3.5访问控制Java程序设计第3章面向对象的编程(基本语法)程序设计语言的发展机器语言-由计算机硬件系统可以识别的二进制指令组成的语言,这种语言中的指令都是由0,1组成的序列,称这样的序列为一条机器指令。如101101110001汇编语言-由机器指令映射出来的容易被人读懂的助记忆符,如ADDDXCX高级语言机器码——低级——高级Java程序设计第3章面向对象的编程(基本语法)面向过程的程序设计设计思路自顶向下、逐步求精。采用模块分解与功能抽象,自顶向下、分而治之。程序结构按功能划分为若干个基本模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立;每一模块内部均由顺序、选择和循环三种基本结构组成。其模块化实现的具体方法是使用子程序。优点有效地将一个较复杂地程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。Java程序设计第3章面向对象的编程(基本语法)面向过程的程序设计的局限在面向过程程序设计中,被操作的数据仍然是嵌入在编程语句中的,并且与程序逻辑混合在一起,计算机的信息世界与现实世界之间的映射关系仍然不直接,不明确。用面向过程的方法开发较大的软件系统,数据缺乏保护。使用面向过程程序设计方法建立的应用程序是很难修改。Java程序设计第3章面向对象的编程(基本语法)面向对象程序设计的概念面向对象程序设计是建立在结构化程序设计基础上的,但它不再是从功能入手,而是从对象(人、地方、事情等)入手;面向对象程序设计以类作为构造程序的基本单位,它具有封装、数据抽象、继承、多态等特点;Java程序设计第3章面向对象的编程(基本语法)面向对象的方法学世界是由什么组成的?名胜人物品动物,植物……Java程序设计第3章面向对象的编程(基本语法)对象一般意义上的对象是现实世界中的一个实际存在的事物,可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划),是构成世界的一个独立单位,具有:对象标识:即对象名,是一个对象区别于其他对象标识符。对象状态:可以用某种数据来描述对象行为:对象所表现的行为或具有的功能Java程序设计第3章面向对象的编程(基本语法)对象颜色:灰色排量:3.0刹车产地:德国行驶名字:保时捷行为状态颜色:红色排量:4.0刹车产地:意大利行驶名字:法拉利行为状态有各自不同的状态Java程序设计第3章面向对象的编程(基本语法)对象布兰尼朱丽叶顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印账单Java程序设计第3章面向对象的编程(基本语法)对象的特征——属性属性——对象具有的各种特征每个对象的每个属性都拥有特定值例如:布兰尼和朱丽叶的体重不一样60kg布兰尼属性35岁收银员布兰尼Java程序设计第3章面向对象的编程(基本语法)对象的特征——方法方法——对象执行的操作打单收银方法刷卡收银员布兰尼Java程序设计第3章面向对象的编程(基本语法)对象的属性和方法列出尼古拉斯·凯奇驾驶的这辆法拉利F360Spider的属性和方法列出小狗对象的属性和方法属性:品牌:法拉利型号:F360Spider颜色:黄色价格:380万元方法:发动停止加速属性:颜色:白色方法:叫跑吃Java程序设计第3章面向对象的编程(基本语法)说一说教室里的对象描述他们的属性和方法颜色:黑色品牌:BENQ投影姓名:张三年龄:20学习Java程序设计第3章面向对象的编程(基本语法)抽象分类-人类通常的思维方式分类所依据的原则-抽象忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。Java程序设计第3章面向对象的编程(基本语法)抽象对象类(抽象化)ShapeJava程序设计第3章面向对象的编程(基本语法)从对象抽象出“类”抽取出下列对象的属性和方法的共同特征顾客Java程序设计第3章面向对象的编程(基本语法)类面向对象方法中的“类”具有相同属性和方法的一组对象的抽象的描述。类的数据成员是对对象属性的抽象,类的方法成员是对对象行为的抽象,而类本身就是对对象的抽象。类与对象的关系犹如模具和铸件之间的关系,一个属于某类的对象称为该类的一个实例。Java程序设计第3章面向对象的编程(基本语法)对象类(抽象化)类对象(具体化)王艳2年级3班刘强5年级1班范小飞2年级1班Student类Java程序设计第3章面向对象的编程(基本语法)类和对象小汽车颜色:灰色排量:3.0刹车产地:德国行驶名字:保时捷行为状态类的实例化,是由类具体化对象类产地车体颜色行驶刹车…归纳一组相似对象的共性对象属性方法Java程序设计第3章面向对象的编程(基本语法)封装把对象的属性和方法结合成一个独立的系统单位对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相承,不能分割Java程序设计第3章面向对象的编程(基本语法)封装封装第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。Java程序设计第3章面向对象的编程(基本语法)继承继承是面向对象语言的另一特性。类与类之间可以组成继承层次,一个类的定义(子类)可以定义在另一个已定义类(父类)的基础上。子类可以继承父类中的属性和操作,也可以定义自己的属性和操作。因而具有继承这一特性所带来的优势,大大增加了程序的重用性。Java程序设计第3章面向对象的编程(基本语法)面向对象的方法学继承ShapeTriangleRectangleEllipseSquarePolygonCircle汽车轿车跑有四个轮子跑有四个轮子Java程序设计第3章面向对象的编程(基本语法)多态多态性多态性是指不同类型的对象接收相同的消息时产生不同的行为。如电梯系统中,当向按钮对象发送消息pressButton()时,不同按钮对象如电梯内部按钮(ElevatorButton)和楼层按钮(FloorButton)会自动判断自己的所属类并执行相应的服务。Java程序设计第3章面向对象的编程(基本语法)消息机制在面向对象技术中,对象间的交互是通过消息的传递来完成的。消息处理方法就是对象的成员方法。Windows操作系统也是以消息为基础,事件为驱动的。Java程序设计第3章面向对象的编程(基本语法)3.2类的定义类是对象的模板,使用对象前必须先创建类[修饰符]class类名[extends父类][implements接口名]{成员变量声明;//描述对象的状态方法声明;//实现对象的行为}publicclassCustomer{publicstringname;publicdoublecreditLimit;publicintcustomerID;}类访问修饰符默认为:friendlyJava程序设计第3章面向对象的编程(基本语法)3.2类的定义类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。类的实现包括两部分:类声明和类体。“classCustomer”叫做类声明;“Customer”是类名。习惯上类名的第一个字母大写,但这不是必须的。类声明之后的一对大括号“{”,“}”以及它们之间的内容称做类体。Java程序设计第3章面向对象的编程(基本语法)3.2类的定义类修饰符:public公共类、private私有类、protected受保护类;abstract抽象类;final最终类。class:是关键字,是声明类的必须的符号。类名:是类设计者指定的标识符。父类:如果正在定义的类需要从另一个类中继承所有的成员,被继承的类就是父类。Java程序设计第3章面向对象的编程(基本语法)类的访问控制顶层类只能是public或默认访问级别public级别的类可以被同一个包或者其他包中的类访问默认级别的类只能被同一个包中的类访问publicclassSample{…}//public级别classSample{…}//默认访问级别protectedclassSample{…}//非法privateclassSample{…}//非法Java程序设计第3章面向对象的编程(基本语法)classtrapezia{floatsupside,subside,high,area;//变量定义部分floatcomputeArea()//方法定义{area=(supside+subside)*high/2.0f;returnarea;}voidmodifyHigh(floath)//方法定义{high=h;}}3.2类的定义Java程序设计第3章面向对象的编程(基本语法)成员变量成员变量是用来描述事物的静态特征的。修饰符[修饰符]数据类型变量名;public:可被所有其他类引用。private:仅可被该类自身引用和修改,不能被其他任何类(包括子类)引用。protected:该类自身、子类、同一包中的其他类。缺省:本包中的类。static:类成员变量,对所有的实例一致,引用时前缀可使用类名或对象名。final:数值不变常量,定义同时应对其进行初始化。Java程序设计第3章面向对象的编程(基本语法)成员变量和局部变量类中变量定义部分所定义的变量被称为类的成员变量。在方法体中定义的变量和方法的参数被称为局部变量。成员变量在整个类内都有效,局部变量只在定义它的方法内有效。如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏。这时如果想在该方法内使用成员变量,必须使用关键字this。Java程序设计第3章面向对象的编程(基本语法)变量1类型变量1;变量2类型变量2;变量3类型变量3;public返回类型方法1(){变量4类型变量4;}public返回类型方法2(){变量5类型变量5;}publicclassAutoLion{}AutoLion类的方法别的类的方法谁能使用这些变量?方法1方法2成员变量局部变量局部变量成员变量和局部变量Java程序设计第3章面向对象的编程(基本语法)publicclassAutoLion{Stringcolor=黄色;publicvoidrun(){//方法1:跑System.out.println(正在以0.1米/秒的速度向前奔跑。);}publicStringbark(){//方法2:叫Stringsound=吼;returnsound;}publicStringgetColor(){//方法3:获得颜色属性returncolor;}publicStringshowLion(){//方法4:输出类的描述信息return这是一个+getColor()+的玩具狮子!叫声是+sound;}}可以调用吗?成员变量和局部变量Java程序设计第3章面向对象的编程(基本语法)类的方法(2)类的方法类的方法,用来规定类属性上的操作,实现类对外界提供的服务,也是类与外界交流的接口。Java中声明方法的语法如下:[修饰符]返回值类型方法名(参数列表)throws异常1{//方法体声明局部变量声明;语句序列;}Java程序设计第3章面向对象的编程(基本语法)类和对象类:相对对象而言,类似于蓝图包含方法和数据对象:是类的实例使用关键字new创建对象具有行为对象厨房起居室浴室书房饭厅储藏室门廊类Java程序设计第3章面向对象的编程(基本语法)3.2.2创建类的实例对象创建一个对象包括对象的声明和为对象分配内存两个步骤。(1).对象的声明。一般格式为:PersonzhangPing;类的名字对象名字;如:Java程序设计第3章面向对象的编程(基本语法)3.2.2创建类的