第3章面向对象PPT讲稿.ppt

上传人:石*** 文档编号:43657027 上传时间:2022-09-18 格式:PPT 页数:27 大小:1.65MB
返回 下载 相关 举报
第3章面向对象PPT讲稿.ppt_第1页
第1页 / 共27页
第3章面向对象PPT讲稿.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《第3章面向对象PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章面向对象PPT讲稿.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第3章面向对象第1页,共27页,编辑于2022年,星期一2学习目标掌握面向对象概念理解类和对象之间的关系,熟练掌握类的设计方法、对象的使用方法,熟练运用实例成员和类成员编写程序了解包的基本使用方法理解Java中继承的概念掌握抽象类、接口的使理解Java中多态的概念熟练运用面向对象解决问题第2页,共27页,编辑于2022年,星期一3学习重点类和对象继承抽象类和接口多态的实现第3页,共27页,编辑于2022年,星期一4一、类和对象类类是java中的一种重要的复合数据类型,是组成java程序的基本要素声明类public|protected|default|privateabstract|finalc

2、lassextendsimplements/类主体不同的修饰符具有不同的含义访问控制修饰符public|protected|default|privateabstract修饰符final修饰符第4页,共27页,编辑于2022年,星期一5一、类和对象类成员的访问控制访问控制修饰符同一类中同一包中不同包中的子类不同包中的非子类publicYesYesYesYesprotectedYesYesYesNodefaultYesYesNoNoprivateYesNoNoNo类型说明final最终类或最终成员,修饰类时表示此类不能有子类,修饰变量时表明此变量是一个常量,修饰方法时表明此方法不允许被覆盖abs

3、tract抽象类或抽象方法,修饰类时表明此类不能定义对象,修饰方法时表明此方法必须被覆盖static类成员或静态成员,表明此成员属于类,而不属于该类的某一具体对象第5页,共27页,编辑于2022年,星期一6一、类和对象类的成员变量类的成员变量作用域是整个类,类中的所有方法均可访问成员变量类变量和实例变量被声明为static的成员变量在没有创建任何类实例的情况下,也可以通过类名被访问。类变量属于一个类而被所有类的实例所共享。没有被声明为static属性的成员变量被称为实例变量和实例方法。实例变量和实例方法必须通过类的实例被访问,需要先创建对象。类的成员变量声明时如果没有初始化,系统会自动为其进行

4、初始化。对于数值类型,会自动初始化成0字符会初始化成对象引用类型会初始化成null第6页,共27页,编辑于2022年,星期一7一、类和对象类的成员方法包含声明和方法体两部分成员方法的返回值return表达式;或:return(表达式);形式参数与实际参数方法名(实参列表);在调用成员方法时应注意:对于无参方法来说,是没有实际参数列表的,但方法名后的括弧不能省略对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。实参名与形参名可以相同也可以不同方法体中的局部变量生存期与作用域是在本方法内第7页,共27页,编辑于2

5、022年,星期一8一、类和对象类的成员方法this关键字可以调用成员变量和成员方法publicvoidsetName(Stringname)/定义setName()方法this.name=name;/将参数值赋给类中的成员变量第8页,共27页,编辑于2022年,星期一9一、类和对象方法重载同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同就是重载当需要调用这些方法中的一种方法时,根据提供的参数的类型选择合适的一种方法构造方法对象的创建通过构造方法完成的,当类实例化一个对象时,类会自动调用构造方法,构造方法的特点如下:构造方法没有返回值构造方法的名称要与本类的类名相同构造方

6、法可以重载第9页,共27页,编辑于2022年,星期一10一、类和对象对象创建对象创建对象包括对象声明和对象初始化两个部分对象声明类名对象名=new类名(参数列表);Circlemycircle=newCircle();创建对象时,也可以将对象声明和对象初始化分开,先做声明,后进行初始化。Circlemycircle;/声明mycircle对象mycircle=newCircle();/对mycircle初始化访问对象的属性和行为访问对象的属性和行为对象名成员变量名对象名成员变量名对象名成员方法名(对象名成员方法名(参数列表参数列表)第10页,共27页,编辑于2022年,星期一11一、类和对象类

7、的组织包的概念包是Java提供的文件组织方式Java规定,同一个包中的文件名必须唯一,不同包中的文件名可以相同创建包package包名;一个多级包的声明:package包名.子包名.子子包名;import语句importpkg1.pkg2.(classname|*);第11页,共27页,编辑于2022年,星期一12二、继承继承的概念继承的概念一个父类可以同时拥有多个子类,这时这个父类实际上是所有子类的公共域和公共方法的集合,而每一子类则是父类的特殊化,是在父类的基础之上对公共域和方法在功能、内涵方面的扩展和延伸。使用继承具有以下的好处降低了代码编写中的冗余度更好地实现了代码复用的功能,从而提高

8、了程序编写的效率使得程序在维护时就变得非常的方便第12页,共27页,编辑于2022年,星期一13二、继承继承实现继承实现类的实现主要有以下几个步骤:确定父类定义子类实现子类的功能类修饰符class子类名extends父类名新增成员变量;新增或重写成员方法;属性和方法的继承新定义的子类可以从父类那里自动继承所有非private的属性和方法作为自己的成员第13页,共27页,编辑于2022年,星期一14二、继承父类对象与子类对象的转换父类对象与子类对象的转换注意如下原则:子类对象可以被视为是其父类的一个对象。父类对象不能被当作是其某一个子类的对象。如果一个方法的形式参数定义的是父类对象,那么调用这个

9、方法时,可以使用子类对象作为实际参数。如果父类对象引用指向的实际是一个子类对象(在以前的某个时候根据这一点把子类对象的引用赋值给这个父类对象的引用),那么这个父类对象的引用可以用强制类型转换转化成子类对象的引用。第14页,共27页,编辑于2022年,星期一15二、继承构造函数的继承遵循下列的原则:子类无条件地继承父类的不含参数的构造函数;如果子类自己没有构造函数,则它将继承父类的无参数构造函数作为自己的构造函数;如果子类自己定义了构造函数,则在创建新对象时,它将先执行继承父类的无参数构造函数,然后再执行自己的构造函数。对于父类的含参数构造函数,子类可以通过在自己构造函数中使用“super”关键

10、字来调用它,但这个调用语句必须是子类构造函数的第一个可执行语句。第15页,共27页,编辑于2022年,星期一16二、继承多态静态多态通过重载实现动态多态通过方法重写实现第16页,共27页,编辑于2022年,星期一17二、继承类成员的覆盖子类对继承自父类的类成员重新进行定义,就称为覆盖,它是一种很重要的多态形式。覆盖的用法子类中所定义的格式必须和父类中的一样,否则父类的类成员就没有被覆盖。使用被覆盖的成员域变量的隐藏对于域变量的隐藏来说,父类定义的域变量在子类对象实例化时仍然分配一个存储空间方法的覆盖子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明,即应与父类有完全相同的方法名、

11、返回值和参数列表super关键字是当前类的直接父类对象第17页,共27页,编辑于2022年,星期一18三、抽象类和最终类抽象类用abstract修饰符修饰的类称为抽象类定义一个抽象类的格式如下:abstractclass类名./类的主体部分它和一般的类不同之处在于如果一个类中含有未实现的抽象方法,该类就必须为抽象类。抽象类中可以包含抽象方法,但不是一定要包含抽象方法。它也可以包含非抽象方法和域变量,就像一般类一样。抽象类不能实例化为对象。抽象类必须被继承。子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。第18页,共27页,编辑于2022年,星期一19三、抽象类和最终类最终类最终类被

12、final修饰符所修饰和限定最终类不能被别的类继承,它的方法也不能被覆盖抽象类和最终类abstract和final修饰符不能同时修饰一个类第19页,共27页,编辑于2022年,星期一20四、接口接口的定义定义了若干个抽象方法和常量,形成的一个属性集合,该属性集合通常对应了某一组功能,其主要作用是可以实现类似于类的多重继承的功能声明接口的语法如下:publicinterface接口名extends父接口名列表/接口体/常量域声明publicstaticfinal域类型域名常量值;/抽象方法声明publicabstractnative返回值方法名(参数列表)throw异常列表;第20页,共27页,

13、编辑于2022年,星期一21四、接口定义接口可归纳为如下几点:在Java中接口是一种专门的类型。用interface关键字定义接口。接口中只能定义抽象方法,不能有方法体,一定是public修饰的。接口中可以定义变量,但实际上是staticfinal修饰的常量。在接口中定义的方法必须被定义为public或者abstract形式,其他修饰权限不被Java编译器所认可,如果不将该方法声明为public类型,也被系认为是public类型。接口中不能定义静态方法。第21页,共27页,编辑于2022年,星期一22四、接口接口和抽象类的区别:接口不能包含任何可以执行的方法,而抽象类可以。类可以实现多个接口,

14、但只有一个父类。接口不是类分级结构的一部分,而没有联系的类可以执行相同的接口。第22页,共27页,编辑于2022年,星期一23四、接口接口的实现在类的声明部分,用implements关键字声明该类将要实现哪些接口。如果实现某接口的类不是abstract抽象类,则在类的定义部分必须实现指定接口的所有抽象方法,即为所有抽象方法定义方法体,而且方法头部分应该与接口中的定义完全一致,即有完全相同的返回值和参数列表。如果实现某接口的的类是abstract的抽象类,则它可以不实现该接口所有的方法。个类在实现某接口的抽象方法时,必须使用完全相同方法头。接口的抽象方法的访问限制符都已制定为public,所以类

15、在实现方法时,必须显式地使用public修饰符。第23页,共27页,编辑于2022年,星期一24五、常用类库介绍java.util包中的集合类Vector类动态数组构造方法常用方法向向量中添加对象voidaddElement(Objectobj)/在向量的最后增加一个元素。voidinsetElementAt(Objectobj,intindex)/在向量的指定位置插入一个元素。从向量中删除对象voidremoveAllElement()/删除向量中的所有对象。voidremoveElement(Objectob)/删除向量中一个指定的对象(仅删除第一次出现的对象)。voidremoveEle

16、mentAt(intindex)/删除向量中一个指定位置上的对象。搜索向量中的对象ObjectfirstElement()/返回这个向量的第一个对象。ObjectlastElement()/返回这个向量的最后一个对象。ObjectElementAt(intindex)/返回这个向量中指定位置的对象。Booleancontains(Objectelem)/如果这个对象在这个对象中,则返回true。获取向量的基本信息intcapacity()/返回这个向量的当前容量。intsize()/返回这个向量的对象个数。第24页,共27页,编辑于2022年,星期一25五、常用类库介绍Stack类后进先出堆栈

17、构造方法常用方法booleanempty()/如果堆栈是空的,则返回true,当堆栈包含元素时,返回false。Objectpeek()/返回位于栈顶的元素,但是并不在堆栈中删除它。Objectpop()/返回位于栈顶的元素,并在进程中删除它。Objectpush(Objectelement)/将element压入堆栈,同时也返回element。intsearch(Objectelement)/在堆栈中搜索element,如果发现了,则返回它相对于栈顶的偏移量。否则,返回-1。第25页,共27页,编辑于2022年,星期一26五、常用类库介绍Hashtable类类通过一个键(通过一个键(key)

18、来查找元素)来查找元素构造方法常用方法Objectput(Objectkey,Objectvalue)/将关键字和值插入散列表中。如果key不在散列表中,返回null。如果key已存在于散列表中,则返回与key相连的前一个值。Objectget(Objectkey)/返回包含与key相关联的值的对象。如果key不在散列表中,则返回一个空对象。Objectremove(Objectkey)/删除key及其相应的值,返回与key相关联的值。如果key不在散列表中,则返回一个空对象。booleanconrainsKey(Objectkey)/用来检查形参对象是否是一个散列表的键,是则返回true,否

19、则返回false。size()/方法返回表中元素的个数isEmply()/方法判断表中是否包含有元素。第26页,共27页,编辑于2022年,星期一27作业编写一个矩形类,将长和宽作为矩形类的属性,在构造方法中将长宽初始化,定义一个成员方法求矩形面积?定义Point(点)类,再定义Line类(线),在Line类中实现一个方法输出线段的长度。要求1)Point(点)类包含两个成员(为了测试方便,设置为public型),即两坐标x和y。Line(线)类,独立,与Point(点)类无继承关系,由于两点决定一条直线,所以Line(线)类中,设两个对象型成员变量,即起点对象成员start和终点对象成员en

20、d,start和end都是Point型。2)在Point(点)类中须实现构造方法Point(inta,intb),Line(线)类的构造方法中必须用到对Point(点)类构造方法的调用(通过new)。有啮齿类动物(rodent),如家鼠(mouse),沙鼠(gerbil),仓鼠(hamster)等。按照这个层次关系,创建抽象类Rodent,Rodent有三个抽象方法hop()、scurry()和reproduce()。在类Mouse、Gerbil和Hamster中按照动物的自身特点实现这些方法。另外用一个Rodent数组测试每种啮齿类动物的这些方法调用是否正确。第27页,共27页,编辑于2022年,星期一

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁