ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:27.04KB ,
资源ID:3301736      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3301736.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java期末复习参考.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java期末复习参考.docx

1、java期末复习参考JAVA期末复习 第三章 类的封装、继承和多态本章首先给出期末考试复习范围和应掌握的知识点。然后是一部分重点练习题(包含教材习题和补充习题),其中用“红字”标识的习题不在期末考试范围内。老师给的答案仅供参考,有的题目答案过长,同学们应该作精简,突出重点,无需面面俱到。一、复习范围和应掌握的知识点(不要死背硬记,理解即可)3.1 类和对象(本小节不单独出简答题,而是结合代码阅读或编程题去理解概念)P68 类、方法、成员变量(属性)的概念。P69 方法重载的概念。P70 对象的概念,new操作符。P72 图3-1,对象的引用模型。P72 图3-2,对象的比较。3.2 类的封装性

2、(本小节不单独出简答题,而是结合代码阅读或编程题去理解概念) P72 类的封装性含义(不要死背硬记,理解即可) P73 构造方法,默认构造方法,拷贝构造方法,构造方法重载。 P74 this引用的三种用法 P75 instanceof运算符 P75 public和private的用法。 P76 静态成员变量和成员方法的概念。 P77 例3-2。这是个很完整的类,要精读。通过代码阅读理解上述P72-76各知识点。 P81 析构方法概念。 P81 掌握深拷贝和浅拷贝的概念即可。例3-3粗略看一下即可,因为此例在后面的继承中要用到,本例题中有关深拷贝的知识点不在期末考试范围内。3.3类的继承性(本小

3、节不单独出简答题,而是结合代码阅读或编程题去理解概念) P85 继承原则。 P86 图3-6,通过该图了解继承的作用。 P87-88 子类的构造方法。3.4类的多态性(本小节不单独出简答题,而是结合代码阅读或编程题去理解概念) 阅读P89例3-5和P91图3-7 ,了解子类如何覆盖父类的方法?如何隐藏父类的成员变量?怎样用super和this区分被覆盖(或隐藏)的子类成员?本例中有关深拷贝的知识点不在期末考试范围内。 这个例子有一个疑点,以前有同学问过。P89倒数第1-2行代码看上去不能深拷贝。 public Student(Student s) /深拷贝构造方法 this(s.name, s

4、.birthday, s.speciality); 的确是教材写错了,如按教材所示,下列测试代码:class Student_ex public static void main(String args) Student s1= new Student(李小明,new MyDate(),计算机); Student s2 = new Student(s1); /调用拷贝构造方法 System.out.println(s1=s2.);/false, 不是一个对象 System.out.println(s1.name=s2.name); /true,值相等 System.out.println(s1

5、.birthday=s2.birthday);/true,引用相等,/说明没有深拷贝 教材那两行代码应改为:public Student(Student s) /深拷贝构造方法 super(s) ; /调用父类Person已实现的深拷贝构造方法 this.count+; / 这行可有可无,有则能正确对子类对象计数 则下列测试代码:class Student_ex public static void main(String args) Student s1= new Student(李小明,new MyDate(),计算机); Student s2 = new Student(s1); /调用

6、拷贝构造方法 System.out.println(s1=s2.);/false, 不是一个对象 System.out.println(s1.name=s2.name); /true,值相等 System.out.println(s1.birthday=s2.birthday);/false,引用不相/等,说明有深拷贝 P92-93 “3.4.2类型的多态”,理解“子类对象即是父类对象(或子类is a kind of父类),这个知识点对以后的JAVA高级课程学习至关重要。P94-95 理解多态的toString()和equals()方法。 P95 例3-6,阅读理解对象数组,对象作为方法的参数

7、及返回值的设计,这几个知识点对以后的JAVA高级课程学习至关重要。3.5 类的抽象性(本小节不单独出简答题,而是结合代码阅读或编程题去理解概念) P99 例3-7,阅读理解:怎样写抽象类?抽象类有什么用(主要是设计与实现分离,抽象方法可以看作是标准)?多态是怎样实现的? 关键代码是P101 CloseFigure g=new Ellipse(10,30) 这几个知识点对以后的JAVA高级课程学习至关重要。 P101 了解最终类和最终方法。专业英语词汇:(说出以下词汇的英文名,不需要解释)类,对象,封装,继承,多态,实例,重载,覆盖,引用(注:这些单词在课本第三章都找得到)P102 习题3【用绿

8、字标识的习题,不单独出简答题,而是结合代码阅读和编程题理解相关知识点】3-1 题目及答案略3-2 答:基本类型传值,引用类型引传引用(类似与C语言指针或数组作为函数参数)3-3 答:能。因为参数是引用类型,修改形参同时也修改实参。但本例的“交换”只是交换了对象的引用,对象本身还是原地不动。请写一个程序测试这两个方法。 3-4 面向对象的三个核心特性是什么?答:封装,继承,多态3-5 什么是封装?为什么要将类封装起来?封装的原则是什么?答:见P72,理解答案即可,不要硬背。3-6 答:见P73,P81。3-7 答:见P73。另外还和以从继承方面说明/3-8 类中的方法与C+函数的区别是什么?答:

9、主要区别是方法从属于类,C+函数可以独立存在。3-10 答:只需掌握public和 private即可。3-11 答:private只能修饰属性和方法,不能修饰类3-12 答:语法无错,但设计概念不对。但属性最好不要public,这首先不符合封装性原则,其次用户直接操作这些属性易造成数值越界(比如day=32)。应把它们声明为private的,然后声明一些public的get*()和set*()方法,间接操纵属性,好处是对用户隐藏了属性名,符合封装性原则,再者不易造成数值越界。3-13 答:语法无错,但设计概念不对,应把set()内的int year=y; 的int去掉。因为int year声

10、明了方法内的局部变量,与属性year无关,这样set()方法不能给属性year赋期望的初值。比如:set(1920,10,10), 属性year没得到1920,而为默认值0 这个题考的是变量的作用域。3-14 答:如与13题联系起来看则与13题犯同样错误。如单独看month,day没有声明类型。3-15 答:形参中的int day=1是语法错。3-16 答:引用类型只能判等,不能比较大小。见教材P72叙述。/3-17 答:这个题想输出1980-12-10这种格式的日期,中间插入“-”字符串也可以把year,month,day自动转为String类型,教材P62说过,字符串与其它类型+时,可把其

11、它类型自动转为字符串,但“-”字符串应该用双引号而不是单引号。/3-18 答:参数类型和个数问题,可参见教材在该例题后面的说明。3-19 说明静态成员和实例成员的区别答:实例成员(属性/方法)属于对象,只能通过 对象名.属性名 或 对象名.方法名 访问。静态成员(static属性/方法)属于类,即可以按实例成员访问,也可通过 类名.属性名 或 类名.方法名 访问。另外,一个static属性无论创建多少对象,始终只占有一个内存单元,可以作为多个对象的“共享变量”使用。3-20 什么是继承?继承机制的作用?子类继承了父类中的什么?子类不需要父类中的成员怎么办,能够删除它吗?JAVA允许一个类有多个

12、父类吗?答:在已有类的基础上定义新类为继承。继承机制可以在不修改父类代码的前提下扩展其功能,这对软件的复用和升级维护特别重要。子类继承了父类中除构造方法以外的所有成员。子类不需要父类中的某个成员,不能删除它,但可以覆盖(override)它,使其具有新的含意。JAVA不允许一个类有多个父类。3-21 答:public 和protected,还有缺省(以包为界)。见P87 “4子类对父类成员的访问权限”3-22答:Object类。它是所有类的根类。3-23答:见教材第4章有关Object类的讲解3-24 如果子类声明的成员与父类成员同名会怎么样?答:参考P88 “3.4.1 子类重定义从父类继承

13、来的成员”,要点是用super区分子类和父类成员。3-25 super引用有什么作用?有几种使用方法?答:一是调用父类的构造方法(P87),二是区分子类和父类成员(P88)。3-26 什么是多态性?什么是方法的重载?方法的重载和覆盖有何区别?答:多态原意为一名字有多种含义,在OO语言中,是指一个方法可以有多种实现,即“一个定义,多种实现”。方法的重载(overload)是指在一个类里,用不同参数,写若干个同名方法。这可以简化外界对类的理解,符合类的封装原则,同时重载也是多态的一种。方法的重载和覆盖(override)主要区别是:前者发生在一个类内,后者在父类和子类之间。3-27 什么是运行时多

14、态?方法的重载和覆盖分别是什么时多态?答:编译时多态是指编译时即绑定多态对象,又叫静态联编,早绑定。运行时多态是指运行时才能确定要绑定的对象,又叫动态联编,晚绑定。方法的重载都是编译时多态,而覆盖分两种情况:当对象引用本类对象时,是编译时多态,否则(比如父类对象引用子类实例)为运行时多态,运行时多态在JAVA高级编程中特别重要。参见P93。/3-28 答:如this是子类对象,则调用子类的howmany(); 如this是父类对象,则调用父类的howmany()。3-29答:这个题很有意思,首先 Object obj=”abc”; 对不对? Object obj=new String(”abc

15、”); 对不对?全对,因为Object是所有类的父类,子类对象即父类对象,赋值兼容,参见P93“父类对象引用子类实例”。其次,obj. toString()和obj.length()执行的是那个类的方法呢?先参见P93“3运行时多态”。由此可知obj. toString()执行的是String的toString()。由于Object没有定义length(), String类的length()不是覆盖Object的同名方法,因此obj.length()调用失败。3-30 答:此题第二行应改为String str=(String)obj;写成 String str=obj也可以。 这样就无错了,o

16、bj.toString()执行的是String类的toString()。原因见29题。/3-31答:此题与上面2题应是同一性质的。/3-32答:参见P92“(3)子类继承并重载父类成员方法”/3-33答:这样做不是覆盖(JAVA语法要求方法覆盖时,其方法名称、返回类型及参数类型完全与父类相同),也不是重载(JAVA语法要求方法重载必需是参数类型或个数不同)。应该是不行,可以上机试一下。3-34 什么是抽象类?在什么情况下需要设计抽象类?抽象类是否必需有抽象方法?答:abstract声明的类称为抽象类,抽象不能被实例化。当要表示一个抽象概念,该抽象概念可以有多种实现,可以使用抽象类,这也是多态的

17、一种。抽象类中可以没有抽象方法。需要注意的是:实现抽象类的子类和抽象类之间,应该是is a kind of关系,即“子类是父类的一类”,否则应该使用接口。这是重要的设计概念,不是JAVA语法要求。3-35 什么是最终类?什么情况下需要设计最终类?最终类中是否必需有最终方法?答:final声明的类称为最终类。如果一个类不需要被继承,可声明为最终类。最终方法是用final声明,不能被子类重写的方法,最终类中不必有最终方法。3-36 答: 除了3-35题的两种用法外,final还可以声明常量。3-37答:抽象类可以有构造方法,但抽象类不能被实例化。抽象类的构造方法是供子类调用的。构造方法不能声明为抽

18、象方法,这样的话子类无法调用。/3-38答:不影响运行时多态性。无论修改与否,父类的area()都没被执行,执行的总是子类的同名覆盖area()。/3-39 3-40答:这两题在第一章中讲过了。补充习题:1.指出下列哪个方法不是public void add(int a)合理的重载方法。_。A、public int add(int a) B、public void add(int a,int b) C、public void add(float a) D、都是合理的。答:A2 .下列构造方法的调用方式中,正确的是_。A、按照一般方法调用 B、由用户直接调用C、只能通过 new 自动调用D、被系

19、统调用答:C3.在 Java 中,能实现多重继承效果的方式是_。A、内部类 B、适配器 C、接口D、同步答:C4判断以下观点的对错:(1)重载是编译时多态,又叫对象的静态绑定、早绑定。而覆盖有时为运行时多态,又叫对象的动态绑定和晚绑定。(2)重载可以简化对象与外界的接口。(3)程序的注释要写被注释的代码做什么,而不要写怎么做。(4)在子类的构造方法中可以使用super调用父类的构造方法。(5)public class MyClass extends Object和public class MyClass两种写法等效。答:全对。5判断以下观点的对错:(1)抽象类和接口都不能被实例化;(2)抽象类

20、可以声明成员变量(属性)和非抽象方法,而接口不能;(3)抽象类和其子类体现的是继承关系,它们是“一类”对象。而接口与实现接口的类之间体现的是契约-实现关系,他们往往不是“一类”对象。(4)Java语言中,类的多重继承只能通过实现多个接口完成。(5)Java语言中,非抽象类可以继承抽象类,反之亦然。答:全对。6简要回答:(1)Java关键字final,如用于修饰变量,则该变量的特点是_;如用于修饰方法,则该方法的特点是_;如用于修饰类,则该类的特点是_。(2)Java关键字static,如用于修饰类的属性(成员变量),则称为实例成员或静态成员,其特点是_;如用于修饰方法,则称为类成员方法或静态方

21、法,其特点是_;答:(1)常量,不能被子类覆盖,不能被继承。 (2)该类所有对象共享该成员变量,该方法无需实例化就可用 类名.方法名 引用。7下列代码publicclassPerson intarr=newint10; publicstaticvoidmain(Stringargs) System.out.println(arr1); 意图是输出arr1的值(为0),但程序在编译时报错,错误的原因是什么?答:类成员arr不是静态的,需要实例化的对象才能被引用。/8递归算法的优缺点?(此题应放在第2章)答:递归算法简洁优雅,有的问题也只能用递归算法实现。缺点是效率低下,占用过多的栈空间易造成栈溢

22、出。9 什么是JAVA垃圾自动回收机制答:内存自动管理技术,可以按某种策略自动回收堆中的无用对象,防止内存溢出。这是JAVA的重要特性。/10 JAVA垃圾自动回收机制不能回收哪几种对象?答:文件,数据库连接,网络连接。这三种对象必需由程序员显式调用close()方法关闭,close()方法本质上是析构方法(JAVA类析构方法的名字是finalize())。11=和equals()有何不同?答:=用于基本类型,判断值是否相等,用于引用类型(对象),则判断其引用(地址)是否相当,一般情况下,我们不用=判定对象是否相等,而用equals()方法。equals()方法原始定义在Object类中,本意

23、也是判断两个对象引用(地址)是否相当,但Object的子类大都覆盖了这个方法,变为两个对象只要属性值一一相等,就为true。JAVA期末复习 第四章 接口、内部类和JAVA API基础本章首先给出期末考试复习范围和应掌握的知识点。然后是一部分重点练习题(包含教材习题和补充习题),其中用“红字”标识的习题不在期末考试范围内。老师给的答案仅供参考,有的题目答案过长,同学们应该作精简,突出重点,无需面面俱到。这一章不指定阅读范围,只需作下面的重点习题。P126 习题4【用绿字标识的习题,不单独出简答题,而是结合代码阅读和编程题理解相关知识点】4-1 答:看教材,自已组织答案。 4-2 答:接口是一种

24、引用数据类型,因此能够声明接口对象,接口对象引用实现它的子类的实例,这肯定是运行时多态。/4-3什么是单重继承?什么是多重继承?类的层次体系为什么需要多重继承?单重继承有什么缺点?既然有缺点,为什么JAVA仍采用单重继承?JAVA怎么实现多重继承?答:单重继承是一个子类只能有一个父类,多重继承是一个子类可以有多个父类。编程要解决的一些实际问题本身是多重继承的,单重继承解决这些问题较困难。JAVA仍采用单重继承,原因主要是编译器实现方便、效率高、可回避多重继承带来的语义歧意等,JAVA允许多重继承接口弥补不能多重继承实类带来的不足。4-4 答:按P106-107对接口的语法要求核对4-5 说明接

25、口和抽象类(语义)的区别答:无需回答语法的区别,只需回答语义的区别。抽象类与其类应为is a kind of的关系,而接口与实现它的子类之间只是“实现或契约”关系。接口和接口都是概念与实现相分离的机制,这种机制允许“一个概念,多种实现”。4-8 答:(只需回答第1问)为了使JAVA完全面向对象,方便进行类型转换等。/4-14 答:泛型是一个需要了解的概念,请参见老师课件第四章PART4。补充习题:1 类以类之间存在哪几种关系?答:常见的有使用,依赖,继承/实现,组成/聚集。在软件设计中,类之间的关系要尽可能松散(低藕合),所以在设计时,使用优先于依赖,组成/聚集优先于继承/实现。上述知识属于软

26、件工程,UML语言等课程的内容。2 阅读教师课件第四章PART1,掌握其中的主要概念和术语,期末考试本部分有2到3道简单题。JAVA期末复习 第五章 异常处理本章首先给出期末考试复习范围和应掌握的知识点。然后是一部分重点练习题(包含教材习题和补充习题),其中用“红字”标识的习题不在期末考试范围内。老师给的答案仅供参考,有的题目答案过长,同学们应该作精简,突出重点,无需面面俱到。这一章不指定阅读范围,只需作下面的重点习题。P140 习题51 答:JAVA采用异常处理机制是为了弥补面向过程(比如C)语言对运行时错误处理能力的不足,其目的是为了给程序员提供便利。JAVA的异常处理机制通过两方面实现:

27、一是将常见的运行时错误封装成错误类和异常类(它们是JDK的一部分),二是JAVA语法中的try ,catch,finally,throw,throws等关键字。异常处理机制不能解决程序运行中的所有错误,比如Error类及其子类的错误。参见P129和P130图5-1。2 答:上机一试/3 答:参见P130图5-14 答:请自己组织答案。/5 答:参见P130图5-1或P131(1),(5)6 答: try ,catch(),finally语句块,参见P132/7 答:因为字符串中含有非0-9的字符时不能转成数字,数字转成字串应不会抛出异常。8 答:上机一试9 此题如能正常通过编译,则运行时cat

28、ch(Exception e)捕获到异常。此题如不能正常通过编译,则在编译时就会发现NumberFormatException异常。上机一试。10 答:如JDK或自定义的异常类确有DateException类,运行时不能捕获异常,因为int i.抛出的异常类型与DateException类型不符。如没有DateException类,则编译时就会报错“找不到符号”。上机一试。11 答:throw在语句中抛出异常,throws在方法声明中抛出异常。12 答:在方法声明中写throws子句,见P137。/13 答:前面加上一句import java.io.*; 再将throw改成throws14 答

29、:当JDK中的异常类不能满足需要时,可继承Exception类编写自定义异常类,参见p138。补充习题:1什么是抛出异常?答:创建一个异常类对象叫抛出异常。 JAVA期末复习 第六章 图形用户界面本章首先给出期末考试复习范围和应掌握的知识点。然后是一部分重点练习题(包含教材习题和补充习题),其中用“红字”标识的习题不在期末考试范围内。老师给的答案仅供参考,有的题目答案过长,同学们应该作精简,突出重点,无需面面俱到。这一章不指定阅读范围,只需作下面的重点习题:P150 例6-2。该例题期末考试必考。通过阅读此例理解P142-150组件、容器、窗口与面板、框架与对话框、标签、按钮、文本行、布局、事

30、件等概念(无需记忆相关类的方法)。 尤其是单击和窗口事件处理的过程。/补充教材:GUI程序编写的两个问题,该部分不在期末考试范围之内。1 怎样写事件处理方法(有关MVC的一些知识) JAVA GUI程序不难写,把界面布局好了以后,注册事件、写事件处理方法就可以了,界面布局代码很繁杂,但小学期JAVA实训的时候会发现,使用eclipse等高级的开发工具,这部分代码几乎不需要写,用组件拖放操作eclipse可以自动替你写,事件的注册和事件处理方法声明eclipse可以自动替你写。程序员似乎只需填写事件处理方法就可以了,这给新手造成一个错觉,以为所有的算法都可以写在事件处理方法内部,使代码“陀“成一堆,非常不清晰。 下面再阅读一下P150 例6-2。 这个程序有什么毛病呢?在事件处理方法中,实现转换的那几行代码是与界面显示无关的,它们是算法部分。这个例子的算法只有几行代码,这样写说得过去,但如果算法有几十行几百行呢?如果算法很多呢?要单独给算法写一个类,在事件处理方法中调用这个类。 有些同学知道三

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1