ch3-Java与面向对象技术.

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三讲Java与面向对象技术1、面向对象的概念2、Java中的类、方法和变量3、Java名字空间及访问规则4、Java中的抽象类、接口和程序包5、对象的构造方法所谓面向对象的方法学,就是使我们分析、设计和实现一个系统的方法尽可能地接近我们认识一个系统的方法。包括:面向对象的分析(OOA,Object-OrientedAnalysis)面向对象的设计(OOD,Object-OrientedDesign)面向对象的程序设计(OOPL,Object-OrientedProgram)面向对象技术主要围绕以下几个概念:对象、抽象数据类型、类、类型层次(子类)、继承性、多态性。1、面向对象的概念对象有两个层次的概念:现实生活中对象指的是客观世界的实体;程序中对象就是一组变量和相关方法的集合,其中变量表明对象的状态,方法表明对象所具有的行为。变量方法1、面向对象的概念——对象现实生活中的对象可以将现实生活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。ClassCar{intcolor_number;intdoor_number;intspeed;voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}抽象数据类型1、面向对象的概念——对象类是描述对象的“基本原型”,它定义一类对象所能拥有的数据和能完成的操作。在面向对象的程序设计中,类是程序的基本单元。相似的对象可以归并到同一个类中去,就像传统语言中的变量与类型关系一样。程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。1、面向对象的概念——类……Carcar1;Carcar2;……CarcarN;1、面向对象的概念——类变量:指对象的所知道的状态。方法:指对象的功能单元。消息软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:1.接受消息的对象2.接收对象要采取的方法3.方法需要的参数对象B对象A消息1、面向对象的概念——类一个例子在程序中所操作的对象是类的一个实例。创建一个对象:Helloobj=newHello();调用方法:obj.showString();调用对象的方法相当于给对象发送消息,收到消息的对象通过改变自身的状态或者向其它对象发送消息来响应消息。classHello{}privateStrings;publicvoidshowString(){System.out.println(s);}publicvoidchangeString(Stringstr){s=str;}变量方法showString()方法changeString()1、面向对象的概念——类为什么要使用类?采用简单数据类型表示现实世界中概念的局存在很大的限性。例如:采用int型数据表示一个日期概念,需要使用3个变量:intday,month,year;如果要表示2个人的生日,就要使用6个变量并且在使用中必须时刻注意三者的联系和约束关系同时在使用日期概念时要同时对三个变量进行访问使用类可以把现实问题中的对象映射为程序中的一个整体——类。1、面向对象的概念——类类中不但有变量,还有与之相关的操作所定义的方法。将变量和方法封装在一个类中,可以对成员变量进行隐藏,外部对类成员的访问都通过方法进行,能够保护类成员不被非法修改。classBirthDate{publicintday,month,year;publicinttomorrow(){……}}BirthDatemybirth,yourbirth;BirthDatedate;已知当前日期对象,求第2天的日期对象:date.day=date.day+1;如果date.day已经为31,操作结果是非法状态。可以定义一个成员方法tomorrow(),求第2天的日期对象。外部要获得当前日期的后一天时,只要调用:date.tomorrow();1、面向对象的概念——类封装把对象的所有组成部分组合在一起私有数据方法方法数据对象A对象B公有数据封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。1、面向对象的概念——封装子类是作为另一个类的扩充或修正而定义的一个类。bicycle(superclass)MountainbikesRacingbikesTandembikessubclass1、面向对象的概念——子类继承是子类利用父类中定义的方法和变量,就像它们属于子类本身一样。classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){…}publicvoidadd_oil(){…}}classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}}1、面向对象的概念——继承方法的覆盖覆盖使得在子类中可以重新定义父类中已有的方法,从而体现出子类自己的行为。classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}publicvoidadd_oil(){…}}classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}publicvoidpush_break(){speed=speed–10;}}1、面向对象的概念——方法的覆盖重载指得是在同一个类中至少有两个方法用同一个名字,但有不同的参数。类voidshow(intint_num)voidshow(doubledouble_num)voidshow(intint_num,floatfloat_num)1231.23123,1.231、面向对象的概念——方法的重载(多态性)例如对于StringBuffer类,它有方法publicStringBufferappend(inti);publicStringBufferappend(doubled);publicStringBufferappend(Strings);publicStringBufferappend(char[]str,intoffset,intlen);类、方法、变量定义的语法规范对象的创建和使用继承、覆盖、重载、多态等概念内嵌类(innerclass)2、Java中的类、方法和变量2、Java中的类、方法和变量——类定义的语法规范类的严格定义及修饰字类的修饰字:[public][abstract|final]缺省方式为friendly[类的修饰字]class类名称[extends父类名称][implements接口名称列表]{变量定义及初始化;方法定义及方法体;}类体,其中定义了该类中所有的变量和该类所支持的方法,称为成员变量和成员方法。[变量修饰字]变量数据类型变量名1,变量名2[=变量初值]…;变量的定义及修饰字[public|protected|private][static][final][transient][volatile]成员变量的类型可以是Java中任意的数据类型,包括简单类型,类,接口,数组。在一个类中的成员变量应该是唯一的。2、Java中的类、方法和变量——变量定义的语法规范[方法修饰字]返回类型方法名称(参数1,参数2,…)[throwsexceptionList]{…(statements;)//方法体:方法的内容}方法的定义及修饰字[public|protected|private][static][final|abstract][native][synchronized]返回类型可以是任意的Java数据类型,当一个方法不需要返回值时,返回类型为void。参数的类型可以是简单数据类型,也可以是引用数据类型(数组、类或接口),参数传递方式是值传递。方法体是对方法的实现。它包括局部变量的声明以及所有合法的Java指令。局部变量的作用域只在该方法内部。2、Java中的类、方法和变量——变量定义的语法规范classA{staticvoidchange(Strings,StringBuffersb){s=“aaaa”;//此语句不起作用sb.setLength(0);sb.append(“aaaa”);}publicstaticvoidmain(Stringargs[]){Strings=“bbbb”;StringBuffersb=newStringBuffer(“bbbb”);change(s,sb);System.out.println(s);System.out.println(sb);}}输出结果:bbbbaaaa2、Java中的类、方法和变量——参数的传递方式是值传递一个简单的类classCar{intcar_number;voidset_number(intcar_num){car_number=car_num;}voidshow_number(){System.out.println(“MycarNo.is:”+car_number);}}classCarDemo{publicstaticvoidmain(Stringargs[]){CarDemocar=newCar();DemoCar.set_number(3838);DemoCar.show_number();}}MycarNo.is:38382、Java中的类、方法和变量——一个简单的类(1)对象的生成通过new操作符生成一个对象;例如:CardemoCar;demoCar=newCar();(2)对象的构造过程为对象开辟空间,并对对象的成员变量进行缺省的初始化;对成员变量进行指定的初始化;调用构造方法。2、Java中的类、方法和变量——对象(3)对象的使用对象的使用是通过一个引用类型的变量来实现,包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调用。例如:BirthDatedate;intday;day=date.day;//引用date的成员变量daydate.tomorrow();//调用date的方法tomorrow()2、Java中的类、方法和变量——对象类的继承classCar{intcar_number;voidset_number(intcar_num){car_number=car_num;}voidshow_number(){System.out.println(“MycarNo.is:”+car_number);}}2、Java中的类、方法和变量——继承classTrashCarextendsCar{intcapacity;voidset_capacity(inttrash_car_capacity){capacity=trash_car_capacity;}voidshow_capacity(){System.out.println(“Mycapacityis:”+capacity);}}2、Java中的类、方法和变量——继承Car是父类,TrashCar是子类。TrashCar中继承了Car中的两个方法,同时又增加了两个新方法。classCarDemo{publicstaticvoidmain(Stringargs[]){TrashCardemoTrashCar=newTrashCar();demoTrashCar.set_number(4949);demoTrashCar.show_number();demoTrashCar.set_capacity(20);demoTrashCar.show_capacity();}}继承的方法新增加的方法2、Java中的类、方法和变量——继承继承性是面向对象程序设计

1 / 71
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功