JAVA期末考前复习要点优质ppt课件

上传人:txadgkn****dgknqu... 文档编号:241048718 上传时间:2024-05-27 格式:PPT 页数:126 大小:2.08MB
返回 下载 相关 举报
JAVA期末考前复习要点优质ppt课件_第1页
第1页 / 共126页
JAVA期末考前复习要点优质ppt课件_第2页
第2页 / 共126页
JAVA期末考前复习要点优质ppt课件_第3页
第3页 / 共126页
点击查看更多>>
资源描述
面向对象的程序设计面向对象的程序设计2017考考试题型型1判断题(2分*10个,共计20分)2不定项选择题(2分*15个,共计30分)3程序阅读题(5分*5个,共计25分)4编程题(3个答题,合计25分)l重点在于复习课上指出的有关例题2上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 2017考试题型判断题(2分*10个,共计20分)2上海财经考核范考核范围1以课堂PPT为蓝本,以郎波老师的教材为基础。2不考或少考:数据库3不考内容:Applet、JSP、JS3上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 考核范围以课堂PPT为蓝本,以郎波老师的教材为基础。3上海财主要考核知识点第一部分l消息:定义、情况及构成lJava可以跨平台的原因:JVMlApplication程序创建过程:n编译 javac.exen解释执行 java.exel聚合、关联,以及两者之间的关系。4上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第一部分4上海财经大学-面向对象程序设主要考核知识点第三部分 1l标识符定义规则l数据类型之间的互相转换:n自动转换n强制转换l数组l类型、长度、内容和地址之间的关系l数组的初始化5上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第三部分 15上海财经大学-面向对象程主要考核知识点第三部分 2l局部变量和类成员变量的初始化l常见数据类型n基本数据类型:n复合数据类型:类类型、String、数组l常量n逻辑型n整型、浮点型n字符型:转义字符6上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第三部分 26上海财经大学-面向对象程数据类型的级别与类型转换运算Java中数据的基本类型(不包括逻辑类型)按精度从中数据的基本类型(不包括逻辑类型)按精度从“低低”到到“高高”排列:排列:byte short char int long float double 当当把把级级别别低低的的变变量量的的值值赋赋给给级级别别高高的的变变量量时时,系系统统自自动动完完成成数数据据类类型型的的转转换换。例如:例如:float x=100;当当把把级级别别高高的的变变量量的的值值赋赋给给级级别别低低的的变变量量时时,必必须须使使用用显显示示类类型型转转换换运运算算。显示转换的格式:(类型名)要转换的值显示转换的格式:(类型名)要转换的值;例如例如 int x=(int)34.89;当当把把一一个个int型型常常量量赋赋值值给给一一个个byte和和short型型变变量量时时,不不可可以以超超出出这这些些变变量量的的取值范围,否则必须进行类型转换运算;取值范围,否则必须进行类型转换运算;例如:例如:byte a=(byte)128;/byte取值范围为:取值范围为:-128 +127(即,即,-2727-1)7上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 数据类型的级别与类型转换运算Java中数据的基本类型(不包括整型变量可自动转化为浮点型这个转化可能会导致损失精度(浮点型有特定的精度)虽然long是8字节,float是4字节,但仍然可以将long自动转化为float。8上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 整型变量可自动转化为浮点型这个转化可能会导致损失精度(浮点型boolean不能和其他类型转换9上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 boolean不能和其他类型转换9上海财经大学-面向引用类型变量 引用引用类型型变量量存存储的是其的是其对应对象的地址,而不是象的地址,而不是该对象的象的值。在Java中,除基本类型以外的变量均为引用类型变量 用户自己定义的类的变量都是引用类型变量。10上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 引用类型变量引用类型变量10上海财经大学-面向对象程数组l数组中的元素都是同一种类型。l数组的长度在创建(不是在声明时指定)的时候确定,并且在创建后固定不变。数组的声明int a;Date d;数组的创建使用new创建:a=new int 10;使用初始值创建:String a=aa,bb;数组变量是引用型引用型引用型引用型:存储的是数组内容所在内存空间的地址地址地址地址。数组元素索引从0 0开始:String a=aa,bb a0=aa,a1=bb参考书本p.596011上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 数组数组中的元素都是同一种类型。数组的声明数组的创建数组变量数组l关于数数组声明声明l表示数组的 在数组变变量量量量之后/C、C+和Java通用的标准格式int a;Date d;参考书本p.5960l表示数组的 在数组类类型型型型之后l表示数组标志之后出现的所有变量都将是数数数数组变组变量量量量/Java特有的格式int a;char s,m,n;/声明了3个字符型数组变量s、m和n。声明不声明不创建建数据空数据空数据空数据空间间,仅仅分配一个分配一个引用空引用空引用空引用空间间。12上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 数组关于数组声明int a;参考书本p.5960表示数组l关于数数组声明声明参考书本p.5960声明声明二维数组二维数组有下列两种格式:有下列两种格式:数组的元素类型数组的元素类型 数组名数组名;数组的元素类型数组的元素类型 数组名数组名;例如:例如:float a;Char b;13上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 数组关于数组声明参考书本p.5960声明二维数组有下列两种数组的初始化l使用初始值直接初始化 int a=1,2,3,4,5 ;Date d=new Date(),new Date(),new Date();l先声明后初始化 int a ;a=new int 10;Date d ;d=new Date 3;l在声明的同时初始化int a =new int 10;Date d =new Date 3;数组的长度在创建时就固定了。如果要在Java中建立长度可以动态变化的数组,可以使用List类。14上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 数组的初始化使用初始值直接初始化数组的长度在创建时就固定了。String类String类在类在java.lang包包中中Java把String类声明为final类,因此不能扩展String类。即String类不可以有子类。由于由于java.lang包中的类被默认引入包中的类被默认引入,因此,因此程序可直接使用程序可直接使用String类类。注意注意15上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 String类String类在java.lang包中Java构造字符串对象1 1字符串常量对象字符串常量对象:用:用西文字符双引号西文字符双引号括起的字符序列。括起的字符序列。2 2字符串对象字符串对象 声明:声明:String s;创建字符串对象:创建字符串对象:s=new String(we are students);例如:例如:你好你好、12.97、boy等。等。String类类较常用构造方法较常用构造方法:String(s),String(char a),String(char a,int startIndex,int count)startIndex和count分别指定提取字符的起始位置以及从该位置开始截取的字符个数。例如:例如:char a=J,a,v,a;String s=new String(a);例如:例如:char a=零零,壹壹,贰贰,叁叁,肆肆,伍伍,陆陆,柒柒,捌捌,玖玖;String s=new String(a,2,4);相当于:相当于:String s=new String(贰叁肆伍贰叁肆伍);16上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 构造字符串对象1字符串常量对象:用西文字符双引号括起的字符构造字符串对象3 3引用字符串引用字符串常量对象常量对象 String s1,s2;s1=how are you;s2=how are you;s1,s2具有相同的引用引用,故具有相同的实体实体。17上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 构造字符串对象3引用字符串常量对象 s1,s2具有相同的引String 类的常用方法1public int length():获取一个字符串的长度获取一个字符串的长度 2public boolean equals(String s):比较当前字符串对象实体的值值是否与参数s指定的字符串实体的值相同值相同如果:如果:那么:那么:tom.equals(boy)的值为false,tom.equals(jerry)的值为ture。但是:但是:tom=jerry的值为false。(判断是否有相同的引用)因为字符串对象tom、jerry具有相同的引用值,但引用的字符串对象不同。tom0 x54C78天道酬勤boy0 xBc66知心朋友jerry0 xAb98天道酬勤18上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 String 类的常用方法1public int lengString 类的常用方法例题例题8_1 8_1 说明了说明了equalsequals的用法。的用法。19上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 String 类的常用方法例题8_1 说明了equals的主要考核知识点第三部分 3l流程控制l顺序序:按语句书写的先后写的先后顺序序执行l分支分支:在若干路径中有条件地有条件地择一一执行l循循环:当某条件成立时,反复反复执行行一段代码20上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第三部分 320上海财经大学-面向对象分支(选择)语句 if语句句if(条件表达式)语句组;if(条件表达式)语句组1;else 语句组2;语句句组:用大括号大括号括起的语句集合else与最近的if配合,用来消除二义性if 条件A if 条件B 语句组1/A&B else 语句组 2/A&(!B)21上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 分支(选择)语句if语句if 条件A 21上海财经大学-分支(选择)语句(续)嵌套的嵌套的if-else-ifif(expression)statement;else if(expression)statement;else if(expression).else statement;if(expression)statement;elseif(expression)statement;else if(expression).else statement;22上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 分支(选择)语句(续)嵌套的if-else-ifif(e嵌套if-else-if 示例例:绩点计算例:绩点计算ji_dian=2.0运算结果:23上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 嵌套if-else-if 示例例:绩点计算ji_dian=2for循环语句for循环语句的语法格式:循环语句的语法格式:for(表达式表达式1;表达式表达式2;表达式表达式3)若干语句若干语句 for语句的执行规则是:语句的执行规则是:(1)计算)计算“表达式表达式1”,完成必要的初始化工作。,完成必要的初始化工作。(2)判判断断“表表达达式式2”的的值值,若若“表表达达式式2”的的值为值为true,则进行(则进行(3),否则进行(),否则进行(4)。)。(3)执执行行循循环环体体,然然后后计计算算“表表达达式式3”,以以便便改变循环条件,进行(改变循环条件,进行(2)。)。(4)结束)结束for语句的执行。语句的执行。24上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 for循环语句for循环语句的语法格式:24上海财经大学-Java的循环语句:for(续)求表达式1(j=0)求表达式求表达式 2 (j10)求表达式3 (j+)False循环体Truefor(j=0;j关系运算符逻辑运算符括号最优先28上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 运算符扩展赋值运算符28上海财经大学-面向对象程序设主要考核知识点第三部分4 面向对象编程基础29上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第三部分4 面向对象编程基础29上海财经大学 Java中的OOP 回顾几个概念l l类类:抽象的集合概念 系统类库中已定义好的类用户自定义的类l l对对象象象象(实例,instance):实际个体创建某个类的具体对象(类似变量声明)类名类名类名类名 欲创建的对象名 new 类名类名类名类名(参数表);例如:String s=new String(“Hello!”);Date d=new Date(2007,07,30);l l继继承承承承、子子子子类类、父父父父类类子类是父类的特例,继承了父类的变量和方法;30上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 Java中的OOP回顾几个概念30上海财经大学-面向完整程序一个java文件最多只有一个publicpublicpublicpublic类,这个类称为 主主主主类类类类,与java文件名相同。31上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 完整程序一个java文件最多只有一个public类,这个类称Java中类的声明 类修饰符(Modifier)lpublic:允许其他类(没有限制)访问本类缺省:可被当前包中的其他类访问labstract:没有实例的抽象类,只能创建其子类的实例。目的:使类的结构清晰,实现多态。l lfinalfinal:不能再被不能再被不能再被不能再被扩扩展,不包含子展,不包含子展,不包含子展,不包含子类类的的的的类类;l易于安全性的实现,或用于创建固定功能的类;父类继承声明:extends 父类名 实现接口(interface):implements 接口32上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 Java中类的声明类修饰符(Modifier)32上海财经大成员变量的声明 声明成员变量member的语法成成员变量:在量:在类体中声明,但不属于任何一个方法。体中声明,但不属于任何一个方法。修修饰符符 数据类型 变量名;33上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 成员变量的声明声明成员变量member的语法33上海财经修饰符:访问控制符成员变量的访问控制符public:可被所有其他类访问protected:该类自身、子类、同一包中的其他类缺省缺省:可被本包中的类访问private:仅可被该类自身访问和修改,不能被其他任何类(包括子类)访问34上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 修饰符:访问控制符成员变量的访问控制符34上海财经大学-修饰符(续)staticstatic:类成员变量(静态变量)对所有的实例一致引用时前缀可使用类类名名或对对象名象名 finalfinal:程序中不能修改其值即常量,定义的同时应对其进行初始化35上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 修饰符(续)static:类成员变量(静态变量)35上海财经成员变量的声明示例 class Circleprivate float radius;protected float area;static float maxArea100.0f;final float PI=3.1415926f;.static属性可直接通过类名引用Circle.maxArea36上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 成员变量的声明示例static属性可直接通过类名引用Circ方法的定义 方法的作用定义对类的成员变量(数据)的操作 方法的定义语法:修饰符 返回类型 方法名方法名(参数列表)throws 异常名 方法体;声明内容方法的性质、接受哪些参数、返回什么信息方法声明部分方法体部分37上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法的定义方法的作用方法声明部分方法体部分37上海财经大学 方法的声明 修饰符访问控制符public,protected,缺省缺省,privatestatic:静态方法,又称类方法。使用类名或对象名作为前缀,建议使用类名作前缀在static型的方法体中,只能访问static变量和自身局部变量优点点:不必对类实例化操作就能被其他类使用该方法。可开发通用工具,如数学计算:Math.sqrt()abstract:只有方法名,没有方法体。要在子类中通过重新定义(override)来实现final:不能被子类所重新定义(override)38上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法的声明修饰符38上海财经大学-面向对象程序设计 方法的声明(续)返回返回类型:型:l方法内returnreturn语句返回值的类型、voidvoid(无返回值)参数列表参数列表:参数类型可为基本类型或引用类型 throwsthrows:l通告本方法中会产生的例外(异常)例外(异常)类型提醒调用者要对相应的可能例外进行处理。l当执行此方法并发生了例外时,程序会转入调用者编制的例外处理程序段。39上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法的声明(续)返回类型:39上海财经大学-面向对象例外触发示例40上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 例外触发示例40上海财经大学-面向对象程序设计-方法体 在方法体中定义的变量称为局部变量。l生命周期:程序流执行进入方法体时创建,程序流退出方法时撤消。l局部变量使用之前必须初始化。l局部变量名若与类的成员变量名相同,则成员变量被隐藏。可用thisthis显示相应的成成员变员变量量。41上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法体 在方法体中定义的变量称为局部变量。41上海财经大学 方法体(续)在方法体中可访问本类所有的类变量,并可调用本类中定义的非静态方法。static方法只能直接调用本类的static方法和static变量。static方法无法引用非static的成员变量numstatic方法可以用类名直接调用42上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法体(续)在方法体中可访问本类所有的类变量,并可调用本类中方法的参数l方法的参数要“有名有型”l参数的作用域在本方法中可像方法内的局部局部变量一量一样使用。l方法调用中,基本基本基本基本类类型型型型参数是值传值传送送;l l引用引用引用引用类类型型型型参数是地址地址传传送送。43上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法的参数方法的参数要“有名有型”43上海财经大学-值传送与地址传送引用类型地址传送基本类型值传送3.143.14AB0 x2F0 x2FCD方法定方法定义:void method1(int A)void method2(String C)方法方法调用用:instance.method1(B)instance.method2(D)A,C是形参B,D是实参44上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 值传送与地址传送引用类型基本类型3.143.14AB0 x2F构造方法l构造方法构造方法与与类同名同名,且不声明返回不声明返回类型型。在创建每个新对象时自动执行以保证新对象的各成员都有合法、确定的初值。Java试图在每个对象一诞生时,就给它一个指定的状态(即成员变量的初值),但有时系统的缺省初值并不合适;所以在创建一个新对象时,需用构造方法完成合法的初始合法的初始化化,使成员变量的初始化工作不依赖于外界(系统)完成。45上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 构造方法构造方法与类同名,且不声明返回类型。Java试图在每构造方法的特点l构造方法与成员方法不同,不能被直接调用。l必须通过new调用;创建对象时,利用运算符 new 在内存中开辟专用空间,存放指定的类的实例(即对象),这时会自动执行类的构造方法,初始化新对象的成员变量.例:Date d=new Date(22,5,2003);46上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 构造方法的特点构造方法与成员方法不同,不能被直接调用。46上构造方法的缺省l每一个类至少有一个至少有一个构造方法构造方法。(可以有多个,重载)l当未定义任何构造方法时,系统在编译时,会提供一个缺省(默认)构造方法n无参数,方法体中没有内容n缺省构造方法的初始化数据初值:数值型:0;布尔型:false;引用型:null;字符串型:null;一旦程序员定义了构造方法,缺省(默认)构造方法自动失效!一旦程序员定义了构造方法,缺省(默认)构造方法自动失效!一旦程序员定义了构造方法,缺省(默认)构造方法自动失效!一旦程序员定义了构造方法,缺省(默认)构造方法自动失效!47上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 构造方法的缺省每一个类至少有一个构造方法。(可以有多个,重载缺省构造方法示例48上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 缺省构造方法示例48上海财经大学-面向对象程序设计 自定义构造方法示例1构造方法与构造方法与类同名同名且不声明返回不声明返回类型型49上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 自定义构造方法示例1构造方法与类同名49上海财经大学-自定义构造方法示例2构造方法与构造方法与类同名同名且不声明返回且不声明返回类型型50上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 自定义构造方法示例2构造方法与类同名50上海财经大学-以“this”调用构造方法this(参数列表)表示调用本类的构造方法 在一个构造方法中,当使用this 并给它一个参数列表时,this显式式调用参数匹配的另用参数匹配的另一个构造方法一个构造方法。使用this调用本类的其他构造方法时,this应是第一个可执行语句51上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 以“this”调用构造方法this(参数列表)表示调类的继承:Extends 关键字 Java中用 extends 关键字定义子类。public class Employee protected String name;protected int grade;protected int salary;子类是从已有的类创建新类的一种方法。public class Manager extends Employee int bonus;要使得子类直接可以访问父类属性,必须声明父类属性的访问符为protected(或public)52上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 类的继承:Extends 关键字 Java中用 extend类的继承创建类时指明它为某类的子类extends 父类名 子子类将将继承承protected和和public的所有父的所有父类成成员(可直接(可直接访问)private:不能被继承缺省:除非子类和父类在同一个包,否则也不能继承 Java是单继承,不支持多继承extends后的类名只能有一个可通过接口间接实现多继承53上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 类的继承创建类时指明它为某类的子类53上海财经大学-类的继承:扩展 子类对父类可做扩展展和特殊化特殊化。l子类继承父类的属性、功能(方法)l子类中只需声明特有的东西。创建新的成建新的成员:属性和方法 l重新定重新定义父父类中已有的中已有的属性属性:父类属性被隐藏l重新定重新定义父父类中已有的中已有的方法方法:重写(override)子类中的方法应与父类中的被重写的方法有完全相同的参数列表、返回值。54上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 类的继承:扩展子类对父类可做扩展和特殊化。54上海财经大学 类的继承示例重新定义属性新添加属性方法重写被重写方法的返回值、方法名、参数列表要与父类中的方法完全一样55上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 类的继承示例重新定义属性新添加属性方法重写被重写方法的返回值方法重写规则 方法的访问权限不能缩小。高低访问权限56上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法重写规则方法的访问权限不能缩小。高低访问权限56上海财经方法重写规则可扩大访问权限57上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法重写规则可扩大访问权限57上海财经大学-面向对象类的继承:上溯造型 子类对象可自动转换成父类对象,即,父父类变量可以指向子量可以指向子类对象象,称为上溯造型(上溯造型(upcast),系统自动完成。58上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 类的继承:上溯造型子类对象可自动转换成父类对象,即,父类变量父类变量执行子类方法 父类变量指向子类对象,但如果要使用子类特有的方法,需要强制转换为子类。59上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 父类变量执行子类方法父类变量指向子类对象,但如果要使用子类特父类变量执行子类重写方法如果父类变量指向子类对象,执行某个父类定义但被子被子被子被子类类重写重写重写重写的方法,实际执行的代码是子类的相应方法。运行运行时多多态:在运行时根据对象的具体情况来决定调用的方法是父类的还是子类的。60上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 父类变量执行子类重写方法如果父类变量指向子类对象,执行某个父回顾方法重载(与重写对比)方法重方法重载:同同类中的中的同名同名方法方法参数必须不同形参的个数、类型、顺序的不同返回值、修饰符可以相同,可以不同要打印不同类型的数据,如int,float,String等(通过不同参数区分)void print(int i);void print(float f);void print(String s);编译时多态编译时多态:由编译器在编译时编译时根据参数的区别,来调用绑定方法体。61上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 回顾方法重载(与重写对比)方法重载:同类中的同名方法要打印不方法重写 vs 方法重载区别点重载方法重写方法参数列表必须修改不能不能修改返回类型可以修改不能不能修改异常可以修改不能不能抛出新的异常访问可以修改不能不能缩小访问权限多态编译时运行时运行时62上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法重写 vs 方法重载区别点重载方法重写方法参数列表必须修注意1:属性无运行时多态!子类重新定义父类属性后,父类属性被隐藏,子类对象无法直接访问父类属性。如果把子类对象赋值给父类变量(上溯造型),再访问该属性,则将访问到父类属性。63上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 注意1:属性无运行时多态!子类重新定义父类属性后,父类属性被注意2:static、final、private方法无运行时多态!静静态联编(早(早联编):Static Binding(Early Binding)Java对static、final、private方法的调用,是在运行前将方法调用和方法体连接到一起不存在运行不存在运行时多多态 动态联编(晚(晚联编):Dynamic Binding(Late Binding)对非static、final、private方法的调用,是在运行运行时才将方法调用和方法体连接到一起实现运行运行时多多态的机理64上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 注意2:static、final、private方法无运行时上溯造型总结上溯造型中:同名方法,若子类重写,则调用子类自己的,是运行时多态:利用动态联编实现。注意:static、final、private方法,利用静态联编实现,故不存在运行时多态。同名属性是调用父类的。一个引用类型变量如果声明为父类的类型,但实际引用的是子类对象,那么该变量不能再访问子类中添加的子类独有的属性和方法。65上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 上溯造型总结上溯造型中:65上海财经大学-面向对象程课堂练习);5sub66上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习);566上海财经大学-面向对象程序设计-课堂练习1判断下列哪些语句是合法的:-b.f();-a.j=5;-a.g();-b.i=3;67上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习1判断下列哪些语句是合法的:67上海财经大学-课堂练习2执行结果?68上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习2执行结果?68上海财经大学-面向对象程序设课堂练习4执行结果?69上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习4执行结果?69上海财经大学-面向对象程序设final关键字被定义成final的类不能有子类。final变量不在声明时初始化会报错final变量不能改变被定义成final 的成员方法不能被重写。被定义成final的成员变量不能改变。该变量实际上是常量,一般大写,并必须在声明时初始化。final int NUMBER=100;70上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 final关键字被定义成final的类不能有子类。finalstatic关键词在一些编程场景中,某些成员应该属于一个类,即被所有该类的对象共享。例:一个类希望通过一个成员属性记录程序中共生成多少个它的对象l关键词static可用于定义类类成成成成员员(类类属性属性属性属性、类类方法方法方法方法),也叫做静静静静态态成成成成员员(静静静静态态属性属性属性属性、静静静静态态方法方法方法方法)l不用staticstatic修饰的成员被称为实实例成例成例成例成员员(实实例属性例属性例属性例属性、实实例方法例方法例方法例方法)l类属性和类方法可直接通通过类名名访问虽然也可以通过该类的对象访问,但属于不良的编程习惯,不推荐。实例属性和实例方法必须通过该类的对象才可访问71上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 static关键词在一些编程场景中,某些成员应该属于一个类,static方法使用注意点static方法中不能直接访问本类的实例属性,只能访问static属性、方法参数及局部变量static方法中不能直接访问本类的实例方法,只能访问本类的static方法如果要访问实例属性或实例方法,可在static方法中先创建本类的对象,再使用该对象的实例属性或实例方法static方法中不能访问this引用72上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 static方法使用注意点static方法中不能直接访问本类抽象类l抽象方法:抽象方法:l只声明方法而没有方法的实现(方法体)l在方法声明中,在紧接着类访问限定词之后增加关键字abstract。l抽象抽象类:l在类声明中,在紧接着类访问限定词之后增加 关键字abstract。l在无方法体的方法(抽象方法抽象方法)前也要加上abstract。public abstract class Drawing /抽象抽象类public abstract void drawDot(int x,int y);/抽象方法抽象方法public void drawLine(int x1,int y1,int x2,int y2)/非抽象方法非抽象方法 一个一个一个一个abstract abstract 类类可以包含有非抽象方法和变量,但至少包含一个抽象方法至少包含一个抽象方法至少包含一个抽象方法至少包含一个抽象方法。73上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 抽象类抽象方法:public abstract class 抽象类l抽象类不能直接用来生成实例。l一般通过定义子类进行实例化l可以声明抽象类的变量l该变量可指向一个子类的实例。abstract class Employeeabstract void raiseSalary(int i);class Manager extends Employee/抽象抽象类的子的子类void raiseSalary(int i)./实现抽象方法抽象方法Employee e=new Manager();/指向子类实例指向子类实例74上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 抽象类抽象类不能直接用来生成实例。abstract clas接口(Interface/Protocol)可看作“特殊的抽象类”l一个接口定义了一组对外的公共接口(一系列操作的组合)l只包含操作签名Signature(即操作名、参数类型、返回值类型)l不包含操作的具体不包含操作的具体实现75上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 接口(Interface/Protocol)可看作“特殊的抽接口(Interface/Protocol)接口的方法需要类进行实现(implementsimplements)76上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 接口(Interface/Protocol)接口的方法需要类Java中的接口(Interface)1)Java允许定义public static final的常量常量常量常量(修饰符只能写public,static,或final,但无论怎么写,都不会影响该变量是public static finalpublic static final)2)interfaceinterface的方法,默认为public abstract(类在实现接口时,必须将实现的接口方法声明为publicpublic)A,B,C,D都是TInterface的public static final变量思考:怎样写程序验证A,B,C,D都是public static final?其他类实现接口的method方法时必须声明public,否则报错77上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 Java中的接口(Interface)1)Java允许定义一个类可实现多个接口 类可以实现(implementsimplements)多个接口如果多个接口中定义了同样的抽象方法抽象方法,在实现的类中实现一次即可。78上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 一个类可实现多个接口类可以实现(implements)多个接接口之间的继承 接口可以继承(extendsextends)接口假设接口B继承接口A类C实现接口B,则需实现接口A和B中定义的所有抽象方法。79上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 接口之间的继承接口可以继承(extends)接口79上海财经子接口子接口可继承多个父接口父接口 注意:一个子接口可以继承(extendsextends)多个父接口接口C继承接口A和B类D实现接口C,则需要实现A,B和C中所有的抽象方法80上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 子接口可继承多个父接口注意:一个子接口可以继承(extendinterface 要注意的问题 尽量不向interface定义中随意增加方法。直接在接口中增加方法,会带来所有实现该接口的类的维护问题。推荐推荐:定义新接口,继承原接口来增加方法public interface shape void draw();void erase();double area();/直接在接口中增加方法,会直接在接口中增加方法,会带来所有来所有该接口的子接口的子类的的维护问题public interface ShapeWithArea extends Shape/通通过子接口来新增方法子接口来新增方法 double area();81上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 interface 要注意的问题尽量不向interfaceinterface:多态性可声明interfaceinterface的变量,指向具体实现该interfaceinterface的类的实例,并实现多态性。82上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 interface:多态性可声明interface的变量,指接口实现配合类继承:多继承这是示意图,考试不必画,这里用来帮助大家理解的。83上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 接口实现配合类继承:多继承这是示意图,考试不必画,这里用来帮Java中接口与抽象类的比较l接口中的所有方法都是抽象的,而抽象类可以定义有方法体的不同方法。l一个类可以实现多个接口,但是只能继承一个父类。l继承父类和实现接口相组合,可实现多继承。84上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 Java中接口与抽象类的比较接口中的所有方法都是抽象的,而抽上机练习创建一个接口,接口名Function,具有一个方法evaluate,参数为一个int型变量,返回值为int。创建一个类,类名Half,实现Function接口的evaluate方法:将传入的参数除以2返回。创建一个类,类名TwoTimes,实现Function接口的evaluate方法:将传入的参数乘以2返回。再新建一个类,在类中实现一个方法,该方法的参数列表为一个int型数组和一个Function类型对象,功能为利用Function对象的evaluate操作对数组的每个元素进行改变,最后返回改变后的int型数组。利用上述方法,以及Half和TwoTimes类,对一个数组的所有元素进行除以2或者乘以2的操作。85上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 上机练习创建一个接口,接口名Function,具有一个方法e主要考核知识点 第四部分 Java类库-异常86上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第四部分 Java类库-异常86上海财经大学 异常分类 Error很难恢复的严重错误。一般属于系统内部错误,不由程序处理。发生时,由用户按照系统提示关闭程序。Exception由程序本身或环境产生的错误,可通过异常处理来进行有效控制。Runtime Exception:程序设计或实现上的问题,如数组越界等。其他Exception:通常是由环境因素引起的,并且可以被处理的。如文件不存在,无效URL等。87上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 异常分类Error87上海财经大学-面向对象程序设计 常用方法:String getMessage():返回详细信息String toString():返回包括异常类名以及getMessage()信息的描述void printStackTrace():打印出异常发生的路径(精确到第几行)即,引起异常的方法调用的序列。这些均继承自ThrowableThrowable类Exception类的常用方法88上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 常用方法:Exception类的常用方法88上海财经大学-异常处理 良好的程序应预见并处理可能发生的各种异常 Java 中的异常处理方法:捕获并处理异常(由发生异常的方法自行处理)将方法中产生的异常抛出(在其他程序调用该方法时进行处理)89上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 异常处理良好的程序应预见并处理可能发生的各种异常89上海财经异常处理:捕获与处理异常 try 语句块 catch 语句块 finally 语句块try语句后必须跟随至少一个catch或者finally语句块90上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 异常处理:捕获与处理异常try 语句块try语句后必须跟随至try/catch/finally一般形式 try语句块:包含可能产生异常的java语句 catch语句块:提供发生异常时的处理方法 finally语句块:无论是否发生异常,均会执行try java statements;catch(SomeThrowableClass variableName)java statements;一条或多条可能产生异常的java语句能够被处理的异常类名,必须是Throwable的子类被捕获异常的变量名称,可作为局部变量使用当捕获到异常时执行的java语句finally java statements;91上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 try/catch/finally一般形式try语句块:包含catch处理多个异常可写多个catch语句块捕获不同种类的异常当抛出一个异常时,依次匹配各个catch语句内捕获的异常类型,执行第一个类型匹配的catch语句,其他catch语句不再执行。匹配规则:抛出对象与catch参数的类型相同或是参数类的子类处理算术异常(如除0)处理数组越界异常92上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 catch处理多个异常可写多个catch语句块捕获不同种类的catch处理多个异常示例除0数组访问越界93上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 catch处理多个异常示例除0数组访问越界93上海财经大学 finally语句句块无论是否发生异常都要执行finally语句块执行完后,继续执行程序的后续代码。94上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 finally语句块无论是否发生异常都要执行94上海财经大学异常处理:抛出异常 在方法声明中说明可能产生的异常,但该方法本身将不处理该异常,而将它抛到调用该方法的程序中去。class A public static void troublesome()throws SomeException.抛出异常Class B tryA.troublesome();catch(SomeException e)调用抛出异常的方法时,用try/catch捕获95上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 异常处理:抛出异常在方法声明中说明可能产生的异常,但该方法本方法声明中throws s后的ExceptionException类类可配合方法体内throw语句抛出异常类对象。throw语句抛出异常类对象声明方法可能抛出的异常使用throw语句抛出异常对象:一旦抛出异常对象,该方法内后续代码不再执行!96上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 方法声明中throws后的Exception类可配合方法体内throw语句抛出异常类对象声明方法可能抛出的异常使用throw语句抛出异常:一旦抛出异常,该方法内后续代码不再执行97上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 throw语句抛出异常类对象声明方法可能抛出的异常使用thr自定义异常继承ThrowableThrowable或者它的子类(如ExceptionException)自定义异常98上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 自定义异常继承Throwable或者它的子类(如Except自定义异常完整的异常类类名99上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 自定义异常完整的异常类类名99上海财经大学-面向对象课堂练习1程序输出?100上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习1程序输出?100上海财经大学-面向对象程序课堂练习2101上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习2101上海财经大学-面向对象程序设计-课堂练习3102上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 课堂练习3102上海财经大学-面向对象程序设计-主要考核知识点 第四部分 Java类库-线程103上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第四部分 Java类库-线程103上海财经大学进程 VS 线程当程序进入到内存运行时,即变成了一个进进程程程程。处于运行过程中的程序。具有一定的独立功能系统进行资源分配和调度的一个独立单位。具有独立性、动态性和并发性。线线程程程程可使得同一个进程可以同时并发处理多个任务。也被称为轻轻量量级进级进程程是进程的执行单元,是进程的组成部分。一个进程可以拥有多个线程,一个线程必须拥有一个父进程。104上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 进程 VS 线程当程序进入到内存运行时,即变成了一个进程。1进程 VS 线程一个程序运行后至少有一个进程,一个程序运行后至少有一个进程,一个进程可以包含多个线程,但至少有一个线程。一个进程可以包含多个线程,但至少有一个线程。操作系统可以同时执行多个任务,每个任务就是进程;操作系统可以同时执行多个任务,每个任务就是进程;进程可以同时执行多个任务,每个任务就是线程。进程可以同时执行多个任务,每个任务就是线程。105上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 进程 VS 线程一个程序运行后至少有一个进程,操作系统可以同线程的创建两种方式,均需要编写runrun()方法实现RunnableRunnable接口继承ThreadThread类推荐使用RunnableRunnable接口的方式,便于继承其他类。实现Runnable接口继承Thread类start方法启动线程106上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 线程的创建两种方式,均需要编写run()方法实现Runnab主要考核知识点 第四部分 4.4 Java类库-输入输出107上海财经大学-面向对象程序设计-面向对象程序设计-面向对象程序设计 主要考核知识点第四部分 4.4 Java类库-输入输出107缓存流存流 BufferedInputStream/BufferedOutputStream;BufferedReader/BufferedWriter数据从原始流成块读入或将数据积累到一个大数据块后再成批输出减少减少读写次数,提高程序写次数,提高程序执行效率行效率过滤过滤流流流流,需在构造方法时给出前端流(输入)或后端流(输出)public BufferedInputStream(InputStream in)public BufferedOutputStream(OutputStream out)108上海财经大学-面向对象程序设计-面向对象程序设
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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