已阅读5页,还剩75页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/11/19,1,Java程序设计ProgramminginJava,雍俊海清华大学软件学院SchoolofSoftware,TsinghuaUniversityyongjunhai,2019/11/19,2,教材,雍俊海.Java程序设计教程.北京:清华大学出版社,2007.,2019/11/19,3,习题集,雍俊海.Java程序设计习题集(含参考答案).北京:清华大学出版社,2006.,2019/11/19,4,参考文献,本课件的参考文献与下面书的参考文献相同雍俊海.Java程序设计教程.北京:清华大学出版社,2007.雍俊海.Java程序设计习题集(含参考答案).北京:清华大学出版社,2006.雍俊海.Java程序设计.北京:清华大学出版社,2004.,2019/11/19,5,第3章面向对象程序设计,雍俊海(Jun-HaiYong)清华大学软件学院SchoolofSoftware,TsinghuaUniversityyongjunhai,2019/11/19,6,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,7,面向对象程序设计整体介绍,面向对象程序设计(OOP)将数据(属性)和方法(行为或功能)封装到类(classes)中数据与方法常常是紧密相关的对象(objects):类的实例对象或类本身三个基本特性:封装性、继承性和多态性,2019/11/19,8,比较,结构化程序设计对应的典型的计算机语言,例如:C面向操作(action)的函数(方法)是程序的基本单位面向对象程序设计对应的典型的计算机语言,例如:Java面向对象(object)的类(class)是程序的基本单位方法(函数)被封装在类中数据也常常被封装在类中,2019/11/19,9,类,类(class)本身也是一种对象类(class)同时也是实例对象的模板类(class)的基本组成:(成员)域和(成员)方法每个对象:拥有内存存储成员域/方法静态的成员域/方法属于类其它成员域/方法属于实例对象,2019/11/19,10,类的定义,类的定义格式如下:类修饰词class类名extends父类名implements接口名称列表类体,2019/11/19,11,多个类组成的程序,很多Java程序需要多个类完成一项任务一个文件一般只含有一个类每个文件的长度一般不要太长最长一般不要超过2000行,2019/11/19,12,方法定义,与C+程序不同的是:每个方法都必须隶属于某个类方法定义的格式:方法修饰词返回类型方法名(方法的参数列表)方法体返回类型:返回数据的数据类型除了构造方法,一般要求返回类型:要么为void,要么为某种数据类型int、byte、float或String最多只能返回一个值方法名:任何一个合法的标识符参数列表:用逗号(,)分隔开,2019/11/19,13,返回控制,如果没有值返回:return;/退出该方法或者遇到该方法的最后一个“”,则退出该方法如果有值返回:return表达式;/退出该方法返回该表达式的值,2019/11/19,14,构造方法,构造方法在创建新的实例对象时起作用构造方法通常用来初始化实例对象,例如:初始化成员域或设置工作环境构造方法的特点:与类同名没有返回值可以含有多种构造方法(重载)但必须具有不同的参数列表,2019/11/19,15,默认的构造方法,如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量默认值:基本数值类型:0;boolean:false;引用数据类型:null最好自己写构造方法一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。,2019/11/19,16,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,17,继承性,继承性软件重用的一种方法根据已有的类创建新的类采纳了旧的类的属性(域)及其行为(方法)增加了新的能力子类继承父类子类增加了新的成员域或新的成员方法有时可以理解成:(但不绝对!)子类对象是一种特殊的父类对象,2019/11/19,18,继承性的实现,采用关键字extendspublicclassJ_HelloAppletextendsApplet/类J_HelloApplet结束,2019/11/19,19,关键字:instanceof,运算符:instanceof例如:if(pinstanceofCircle)上面的条件为true,当且仅当引用p所指向的对象是类Circle(或其子类)的实例对象,2019/11/19,20,多重继承,在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为多重继承Java不支持多重继承Java允许一个类有多个直接父接口(interface),2019/11/19,21,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,22,多态性,优点:代码重用简化设计、简化代码便于程序扩展,2019/11/19,23,多态性的种类,静态的多态性重载动态的多态性覆盖,2019/11/19,24,静态的多态性(重载),在编译时就能够被识别针对的是同一个类内的同名方法例如:publicintsquare(intx)returnx*x;publicdoublesquare(doublex)returnx*x;,2019/11/19,25,识别重载方法,识别标志:参数的个数、类型、数据类型的排列顺序返回值不能做为识别的标志,2019/11/19,26,动态多态性(覆盖),在程序运行时才被识别重写父类的方法要求相同的声明例如:publicclassJ_HelloAppletextendsJAppletpublicvoidpaint(Graphicsg)g.clearRect(0,0,getWidth(),getHeight();/清除背景g.drawString(小应用程序,您好!,10,20);/方法paint结束/类J_HelloApplet结束,2019/11/19,27,源程序:J_Teacher.Java,/文件名:J_Teacher.java;开发者:雍俊海classJ_Employeepublicintm_workYear;/工作的年限publicJ_Employee()m_workYear=1;/J_Employee构造方法结束publicvoidmb_printInfo()System.out.println(该职工的工作年限为+m_workYear);/方法mb_printInfo结束/类J_Employee结束,2019/11/19,28,publicclassJ_TeacherextendsJ_Employeepublicintm_classHour;/授课的课时publicJ_Teacher()m_classHour=96;/J_Teacher构造方法结束publicvoidmb_printInfo()System.out.println(该教师的工作年限为+m_workYear);System.out.println(该教师授课的课时为+m_classHour);/方法mb_printInfo结束publicstaticvoidmain(Stringargs)J_Employeea=newJ_Employee();a.mb_printInfo();a=newJ_Teacher();a.mb_printInfo();/方法main结束/类J_Teacher结束,源程序:J_Teacher.Java,2019/11/19,29,编译、运行,2019/11/19,33,包,包java.langjava.lang.Objectjava.lang.Math包java.utiljava.util.Random,2019/11/19,34,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,35,类成员的封装性,成员(域或方法)的访问控制方式:1)public2)private3)protected4)default(缺省方式),2019/11/19,36,成员的访问控制方式:public,则该成员可以被任何类中的方法访问表明对外开放的方式少量(或者没有)public域部分public方法,2019/11/19,37,成员的访问控制方式:private,目的:隐藏具体的实现细节只有同一个类的成员方法才能访问私有成员域常常是private采用public“get”方法读取数据采用public“set”方法写数据,2019/11/19,38,成员的访问控制方式:protected,介于public和private之间同一个包内的所有类的所有方法都能访问该成员如果不在同一个包内的类的方法要访问该成员,则该类必须是该成员所在的类的子类,2019/11/19,39,成员的访问控制方式:default(缺省方式),只有在同一个包内的类的方法才能访问该方法,2019/11/19,40,类成员封装性总结,2019/11/19,41,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,42,abstract,Java允许定义抽象(abstract)的类和方法抽象(abstract)的方法可以只提供方法的头部,但不提供实现的部分抽象(abstract)的方法只能是抽象(abstract)类中的方法例如:publicabstractclassJ_VehiclepublicabstractclassJ_Shapepublicabstractvoidfuel();publicabstractvoidmb_draw();,2019/11/19,43,关键字:static,静态的(static)域和静态的(static)方法实际上隶属于类对象静态的(static)域示例:System.out静态的(static)方法示例:main()示例:Math.sqrt()publicstaticdoublesqrt(doublea),2019/11/19,44,关键字:final,可以修饰的对象:final域final方法final类,2019/11/19,45,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,46,接口(interface),接口(interface)就象是一种特殊的类成员方法:abstract成员域:final和static接口(interface)中所有的方法和域必须都是public的每个接口一般定义在一个.java文件中,2019/11/19,47,示例,例1:通过接口定义一些常量publicinterfaceJ_ConstantspublicstaticfinalintONE=1;publicstaticfinalintTWO=2;publicstaticfinalintTHREE=3;/接口J_Constants结束例2:interfaceJ_Shapepublicabstractvoidmb_draw(Graphics2Dg);/接口J_Shape结束,2019/11/19,48,注意事项,接口中成员方法的默认方式是public和abstract接口中成员域的默认方式是public、static和final,2019/11/19,49,优点,一个类可以继承多个接口例如:,publicclassAextendsBimplementsC,D,2019/11/19,50,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,51,内部类,定义在其它类内部的类称为内部类内部类有些类似于类的成员域或成员方法,2019/11/19,52,匿名内部类,没有类名常常用在图形用户界面设计(GUI)中,进行各种事件处理例如:鼠标事件、按钮事件和键盘事件等,2019/11/19,53,本章总体纲要,类、域、方法和实例对象继承性多态性包(package)封装性关键字abstract、static、final和this接口内部类变量作用域范围和参数传递方式面向对象程序设计基本思想,2019/11/19,54,变量的作用域范围,作用域范围:程序中能够使用该变量(域与局部变量)的范围分类:类作用域范围和块作用域范围,2019/11/19,55,类作用域范围,从类定义的第一个“”开始,到最后一个“”结束超出类的范围,类的成员方法不能直接通过它的名称进行访问例如:成员域,2019/11/19,56,块作用域范围,从变量声明之处,到该块的最后一个“”例如:局部变量与成员方法的参数,2019/11/19,57,值传递示例,/编写一个程序用来说明/Java方法调用过程中/值传递方式/,2019/11/19,58,源程序,/文件名:J_Primitive.java;开发者:雍俊海publicclassJ_Primitivepublicstaticvoidmb_method(inta)System.out.println(在a+之前方法参数a=+a);a+;System.out.println(在a+之后方法参数a=+a);/方法mb_method结束publicstaticvoidmain(Stringargs)inti=0;System.out.println(在方法调用之前变量i=+i);mb_method(i);System.out.println(在方法调用之后变量i=+i);/方法main结束/类J_Primitive结束,2019/11/19,59,编译、运行开发者:雍俊海publicinterfaceJ_Shape/计算并返回形状的面积publicabstractdoublemb_getArea();/接口J_Shape结束,2019/11/19,64,源程序:J_Circle.java,/文件名:J_Circle.java;开发者:雍俊海(待续)publicclassJ_CircleimplementsJ_Shapepublicdoublem_x,m_y;/圆心坐标publicdoublem_radius;/半径publicJ_Circle(doubler)m_x=0;m_y=0;m_radius=r;/J_Circle构造方法结束,2019/11/19,65,源程序:J_Circle.java,/文件名:J_Circle.java;开发者:雍俊海(续)publicJ_Circle(doublex,doubley,doubler)m_x=x;m_y=y;m_radius=r;/J_Circle构造方法结束/计算并返回形状的面积publicdoublemb_getArea()return(Math.PI*m_radius*m_radius);/方法mb_getArea结束/类J_Circle结束,2019/11/19,66,源程序:J_Rectangle.java,/文件名:J_Rectangle.java;开发者:雍俊海(待续)publicclassJ_RectangleimplementsJ_Shapepublicdoublem_minX,m_minY;/第一个角点坐标publicdoublem_maxX,m_maxY;/另一个角点坐标publicJ_Rectangle(doublex1,doubley1,doublex2,doubley2)if(x1x2)m_minX=x1;m_maxX=x2;elsem_minX=x2;m_maxX=x1;/if-else结构结束,2019/11/19,67,源程序:J_Rectangle.java,/文件名:J_Rectangle.java;开发者:雍俊海(续)if(y1y2)m_minY=y1;m_maxY=y2;elsem_minY=y2;m_maxY=y1;/if-else结构结束/J_Rectangle构造方法结束/计算并返回形状的面积publicdoublemb_getArea()return(m_maxY-m_minY)*(m_maxX-m_minX);/方法mb_getArea结束/类J_Rectangle结束,2019/11/19,68,源程序:J_Area.java,/文件名:J_Area.java;开发者:雍俊海publicclassJ_Areapublicstaticvoidmain(Stringargs)J_Shapea=newJ_Circle(5);System.out.println(半径为5的圆的面积是+a.mb_getArea();a=newJ_Rectangle(0,0,3,4);System.out.println(给定的矩形面积是+a.mb_getArea();/方法main结束/类J_Area结束,2019/11/19,69,作业,教材习题3.4教材习题3.9,2019/11/19,70,本课件使用要求,使用本课件,必须注明引用(具体见下一个幻灯片)书及课件均可能出现一些错误和缺陷,恳切希望广大读
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拆迁墓地赔偿协议书
- 乌克兰放弃边境协议书
- 2025年RISC-VSiFive核系列分析考核试卷
- 住宅配套定制协议书
- 2025初级商业人像摄影师情绪人像光影叙事布光考核试卷
- 直播讲师协议书
- 配电房代管协议书
- 配置报文的协议书
- 2025年航空航天行业航空科技与航天工程研究报告及未来发展趋势预测
- 2025年水产养殖环境应急处理技术考核试卷
- 华为ICT大赛中国区(实践赛)-昇腾AI赛道往年考试真题(附答案)
- 工商银行讨论面试题目及答案
- 2025中铁信息工程集团沈阳分公司招聘笔试历年常考点试题专练附带答案详解2套试卷
- 2025年国家工作人员学法用法考试题(附答案)
- 深圳市建设报建流程及资料准备指引
- 房颤合并冠心病的抗凝指南2025
- 人防防化施工方案
- 2025年南陵县县属国有企业公开招聘工作人员55人笔试考试参考试题及答案解析
- 2025年农商银行面试题目及答案
- 合伙代理酒水合同范本
- 普通高中化学课程标准(2025年版)
评论
0/150
提交评论