第4章-Java语言与面向对象作业习题与答案

合集下载

Java程序设计案例教程 习题答案 第4章 面向对象 下

Java程序设计案例教程  习题答案  第4章 面向对象 下

第4章面向对象(下)一、填空题1. 12.重写3. final4. instanceof5. Implements6.编译时异常7. RuntimeException8.逗号二、判断题1.对2.对3.错4.对5.错6.对7.对8.错9.对10.错三、选择题1. B2. D3. D4. D5. B6. D7. C8. B9. B10.D11.C四、简答题1.抽象类和接口有如下区别:1)抽象类可以有构造方法,接口中不能有构造方法。

2)抽象类中可以有普通成员变量,接口中没有普通成员变量。

3)抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4)抽象类中的抽象方法的访问类型可以是public, protected和(默认类型),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5)抽象类中可以包含静态方法,接口中不能包含静态方法。

6)抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认为public static final类型。

7) 一个类可以实现多个接口,但只能继承一个抽象类。

2.在类的继承中需要注意的问题:1).在Java中,类只支持单继承,不允许多重继承,也就是说一个类只能有一个直接父类;2).多个类可以继承一个父类;3).在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类;4).在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。

五、编程题1.Employee.java139//定义一个测试类140 public class Test{141public static void main(String[] args){142//声明一个Employee类型的数组,并创立不同子类型的对象143Employee [ ] employee = {new SalariedEmployee (“张三”,1,6000), newHourlyEmployee (“李四”,2,50,180) , new SalesEmployee (“王五” ,3, 6500,0・15),new BasePlusSalesEmployee(, 4,5000,0.15,2000)}; 144//打印每个员工的工资145for (int i = 0; i < employee.length ;i + + )146System.out.printin(Math.round(employee[i].getSalary(10)));147)148)。

《Java基础入门》_课后习题答案大一计算机专业4

《Java基础入门》_课后习题答案大一计算机专业4

《Java基础入门》课后习题答案第4章面向对象(下)一、填空题1、一个类如果实现一个接口,那么它就需要实现接口中定义的全部方法,否则该类就必须定义成抽象类。

2、一个类可以从其他的类派生出来。

派生出来的类称为子类、用于派生的类称为父类或者基类。

3、定义一个Java 类时。

如果前面加使用final 关键词修饰,那么该类不可以被继承。

4、在Java语言中,所有的类都直接或间接继承自Object 类5、一个Lambda 表达式由三个部分组成,分别为参数列表、“->”、表达式主体二、判断题1、错2、对3、错4、对5、错1.抽象方法必须定义在抽象类中,所以抽象类中的方法都是抽象方法。

(×)2. Java 中被final 关键字修饰的变量,不能被重新赋值。

(√)3.不存在继承关系的情况下,也可以实现方法重写。

(×)4.函数式接口在Java中是指有且仅有一个抽象方法的接口。

(√)5.接口中只能定义常量和抽象方法。

(×)三、选择题1、B2、ABC3、C4、C5、A1.在类的继承关系中,需要遵循以下哪个继承原则?(B)A.多重B.单一C.双重D.不能继承2.关于super关键字以下说法哪些是正确的?(多选)(ABC)A. super 关键字可以调用父类的构造方法B.super 关键字可以调用父类的普通方法C. super 与this 不能同时存在于同一个构造方法中D. super 与this 可以同时存在于同一个构造方法中3.类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?(C)A. publicB. protectedC. privateD. default4.在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?(C)A. inheritsB. implementsC.extendsD. modifies5.已知类的继承关系如下:class Employee;class Manager extends Employeer class Director extends Employee;则以下语句能通过编译的有哪些?(A)A.Employee e=new Manager();B. Direetor d=new Manager();B.C. Director d=new Employee(); D. Manager menew Director();四、简答题1.简述什么是方法重写2.简述什么是多态。

Java程序设计 第4章习题参考答案[2页]

Java程序设计 第4章习题参考答案[2页]

第4章习题参考答案一、简答题1.Java提供了哪些数据类型,全部写出来。

整型:byte,short,int,long数值型浮点型:float,double基本数据类型字符型:char数据类型布尔型:boolean类:class复合数据类型字符串:String接口:interface2.如何进行数据类型的转换?有2种方式:自动类型转换:运算时,不同类型的数据先转换成同一类型后再参与运算,转换的原则是位数少的类型转换成位数多的类型,由系统自动处理。

强制类型转换:当位数多的类型向位数少的类型进行转换时,需要用户明确说明要转换的类型,需要用户在程序中指明。

3.类的修饰符有哪些?有什么区别?类的修饰符包括访问控制修饰符、静态修饰符static、最终说明符final。

访问控制修饰符包括4种类型:privat、default、protected、public。

用static声明的成员变量被视为类的成员变量,而不能当成实例对象的成员变量,也就是说,静态变量是类固有的,可以被直接引用,而其它成员变量声明后,只有生成对象时才能被引用。

4.public的类和abstract的类有什么不一样?public的类是公共类,可以被继续,可以实例化,可以被其他包访问。

abstract的类是抽象类,其中一定含有抽象方法,abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。

5.什么是最终类?如何声明?最终类不能被继承,也没有子类。

final类中的方法默认是final的。

final方法不能被子类的方法覆盖,但可以被继承。

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

声明方法:final class ClassName。

二、操作题1.创建一个学生类Student,包括学号no、姓名name、年龄age、性别sex四个属性以及学习study、实践practice两个方法。

JAVA课后的答案第四章

JAVA课后的答案第四章

第4章1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费程序。

该程序存在错误,请找出。

public class Test{public static void main(String[] args) throws IOException{float w,fee;//以下代码为通过控制台交互输入行李重量InputStreamReader reader=new InputStreamReader(System.in);BufferedReader input=new BufferedReader(reader);System.out.println("请输入旅客的行李重量:");String temp=input.readLine();w = Float.parseFloat(temp); //字符串转换为单精度浮点型fee = 0;if ( w > 20);fee = (float)1.2 * (w-20);System.out.println("该旅客需交纳的托运费用:"+fee+"元");}}缺少import java.io.*; 语句2.有一条长的阶梯,如果每步2阶,则最后剩1阶,每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,只有每步7阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶?找出以下求解程序的错误所在。

public class Test{ public static void main(String[] args){int i;while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0) {i++;}System.out.println("这条阶梯最少有:"+i+"阶");}}1)变量i应进行初始化。

047Java入门经典第4章课后习题答案

047Java入门经典第4章课后习题答案

3
Java 入门经典第 4 章课后习题答案
4.7 习题
选择题
1.当编译和运行下列代码时会发生什么?( BE ) public class Test { public static void main(String[] args) { char myChar='c'; switch (myChar){ default: case'a': System.out.println("a"); break; case'b': System.out.println("b"); break; } } } A.switch 块非法,因为只能使用 int 类型作为参数 B.switch 块合法 C.switch 块非法,因为 default 必须放在块的结尾处 D.运行程序后,控制台无输出 E.运行程序后,控制台输出 a 2.当编译和运行下列代码时会发生什么?( BD ) public class Test { public static void main(String[] args) { int i=5; do { System.out.println(i); }while (--i>5); System.out.println("Finished"); } }
1Байду номын сангаас
A.6
B.5
C.4
D.Finished
3.当编译和运行下列代码后输出的结果是 Second,则 x 的取值范围是?( D ) public class Test { public static void main(String[] args) { int x=( if (x>0) System.out.println("First"); else if (x>-3) System.out.println("Second"); else System.out.println("Third"); } } A.x>0 B.x<=0 C.x<-3 D.x<=0 且 x>-3 4.当编译和运行下列代码时会发生什么?( C ) public class Test { public static void main(String[] args) { boolean flag=false; if(flag=true) { System.out.println("true"); }else{ System.out.println("false"); } } } A.编译错误 B.运行错误 C.输出 true D.输出 false 解析:注意 if(flag=true),若为 if(flag==true),则结果为 D 5. .当编译和运行下列代码时会发生什么?( C ) public class Test { public static void main(String[] args) { int total=0; for(int i=0;i>total;i++) { System.out.println(i); } System.out.println(total); } }

JAVA语言与面向对象程序设计课后章节习题答案

JAVA语言与面向对象程序设计课后章节习题答案

String s1 = in1.getText(); double d1 = Double.parseDouble( s1 ); String s2 = in2.getText(); double d2 = Double.parseDouble( s2 ); double result = d1 * d2; out.setText( d1 + "X" + d2 +"=" + result); } } } 2.Java 有哪些基本数据类型?写出 int 型所能表达的最大、最 小数据。 答:Java 中定义了 4 类/8 种基本数据类型: (1)逻辑型——boolean (2)整数型——byte, short, int, long (3)浮点数型——float, double (4)字符型——char 其中整型 int 占 4 个字节,其范围为-2147483648-2147483647。 3.Java 的字符采用何种编码方案?有何特点?写出五个常见的转 义符。 答:char(字符型)是用 Unicode 编码表达的字符,在内存中占两 个字节。由于 Java 的字符类型采用了一种新的国际标准编码方 案——Unicode 编码,这样便于东方字符和西方字符处理,这样
/doc/3c8e0230a88271fe910ef12d2 af90242a895ab8c.html 网站下载较新的版本,如 JDK1.5(也称 为 JDK5.0)。 JDK 文档也可以从网上下载。 3.编写一个 Java Application,利用 JDK 软件包中的工具编译 并运行这个程序,在屏幕上输出“Welcome to Java World!”。 答:见程序。 public class Ex2_3 { public static void main(String[] args) { System.out.println("Welcom to java vorld"); } } 4.编写一个 Java Applet,使之能够在浏览器中显示“Welcome to Java Applet World!”的字符串信息。 答:见程序。import java.awt.*; import java.applet.*; public class Ex2_4 extends Applet { //an applet public void paint(Graphics g){ g.drawString ("Welcome to Java Applet World!",20,20); }

《Java基础入门》课后章节习题及答案(完整版)

《Java基础入门》课后章节习题及答案(完整版)

《Java基础入门》课后章节习题及答案(完整版)《Java基础入门》课后习题第1章Java开发入门一、填空题1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。

2、Java程序的运行环境简称之为JRE_____。

3、编译Java程序需要使用_javac_____命令。

4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。

5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用来保存保存Java虚拟机要运行的“.class”文件路径。

二、选择题1、以下选项中,哪些属于JDK工具?(多选)ABCDA、Java编译器B、Java运行工具C、Java文档生成工具D、Java打包工具2、Java属于以下哪种语言?CA、机器语言B、汇编语言C、高级语言D、以上都不对3、下面哪种类型的文件可以在Java虚拟机中运行?DA、.javaB、.jreC、.exeD、.class4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?BA、Java文档制作工具B、Java解释器C、Java编译器D、Java启动器5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;三、问答题1、简述Java的特点。

面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。

2、简述JRE与JDK的区别。

JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。

Java语言程序设计 课后习题+答案

Java语言程序设计 课后习题+答案

第一章课后习题1.编译Java程序的命令是什么?2.执行Java程序的命令是什么?3.Java应用程序和小程序的区别是什么?4.编写一个application ,实现在屏幕上打印自己名字的功能。

第一章课后习题答案1.编译Java程序的命令是什么?答案:javac 源文件名2.执行Java程序的命令是什么?java 主类名3.Java应用程序和小程序的区别是什么?Java application⏹由Java解释器独立运行字节码⏹由专门的命令行启动程序执行⏹程序中有定义了main()方法的主类Java applet⏹不能独立运行,字节码必须嵌入HTML文档⏹当浏览器调用含applet的Web页面时执行⏹程序中含有java. applet. Applet 类的子类4.编写一个application ,实现在屏幕上打印自己名字的功能。

class Test{public static void main(String[] args){System.out.println(“张三”);}}第二章课后习题(1)一、选择题1.下列变量定义错误的是。

A) int a; B) double b=4.5; C) boolean b=true; D)float f=9.8;2.下列数据类型的精度由高到低的顺序是:a)float,double,int,longb)double,float,int,bytec)byte,long,double,floatd)double,int,float,long3.执行完下列代码后,int a=3;char b='5';char c=(char)(a+b);c的值是?A)’8’ b)53 c)8 d)564.Unicode是一种_____________A) 数据类型 B)java包 C)字符编码 D)java类5.6+5%3+2的值是___________A)2 B)1 C) 9 D)106.下面的逻辑表达式中合法的是__________A)(7+8)&&(9-5) B)(9*5)||(9*7) C)9>6&&8<10 D)(9%4)&&(8*3) 7.java语言中,占用32位存储空间的是__________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章 Java语言与面向对象作业习题与答案一、简答题1.什么是对象?什么是类?对象是一种抽象数据类型。

它包含了事物的静态特征(属性)和动态特征(行为)两大特征。

类是一组同种对象的集合与抽象。

即是具有相同属性和方法的一组对象集合。

2.Java语言的单继承是指什么?一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。

3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用?当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。

4.抽象类的用途(1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性;(2)设计出的类也具有更加良好的可扩展性。

5.什么是非静态的成员变量?非静态成员即为实例成员变量(没有加static修饰的变量)。

6.异常Exception和错误Error有什么不同?Java如何处理它们?答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。

异常表示另外一种“非同寻常”的错误。

这种错误通常是不可预测,但可以被捕获且可以恢复。

常见的异常情况包括存不足、找不到所需文件等。

对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。

对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。

7.简单述Java的异常处理机制。

答:Java采取“抛出—捕获”的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。

8.简单述throw语句和throws关键字之间的差别。

答:throw语句是在一个方法中用来直接抛出异常对象,其格式是:throw 异常对象;throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表{ /*方法体*/ }二、填空题1.所有Java应用程序都必须包含的一个类方法是 main() 。

2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。

3.方法重载与方法覆盖的不同有:方法重载是指允许在同一个类中定义多个同名方法,它们通过形参的个数或形参参数的类型来区别;方法覆盖是指在子类中重新定义了与父类中的方法同名的方法。

4.面向对象程序设计语言的多态的事项方法主要有三种:方法重载、方法覆盖和接口。

5.对象之间的信息通过消息传递机制来完成。

6.成员变量的修饰符有(写出6种)public, friendly, protected, private, final, static。

7.整个类共同拥有的方法是用static修饰的方法或叫类成员方法;它具有统计一个类的实例个数等用途。

8.引用父类中的成员用super;引用当前的类或对象用this。

9.在面向对象中,继承有两种含义,分别指在类的层次结构中,子类自动继承父类的特性和同一类的所有实例对象都具有所属类的特征。

10.在Java语言中,所有类都是Object类的子类。

11.多继承问题指的是一个类有多个父类问题;在Java语言过接口方法解决多继承问题。

12.接口是一种特殊的类,它只能定义一些抽象方法和常量。

13.在Java语言中,一组类和接口的集合通常被称为类库或API包或应用程序接口。

14.给出引用包的两种方法是:使用包名、类名做前缀;使用import语句。

15.Java语言异常处理三种方式是:捕获异常、声明异常和自定义异常16.程序设计过程中可能会出现的两种错误是编译错误和运行错误。

17.程序设计过程后的运行错误大致有三类。

它们是逻辑错误、用户输入不合法和硬件设备出错。

18.在Java语言中,用try-catch-final结构来捕获并处理异常。

19.用户程序使用throw new 异常类名;抛出自己的异常。

20.自定义异常类必须继承Exception类。

三、选择题1.下述声明中哪一种可以防止该类产生子类?A.static class DEF{} B.private calss DEF{}C.abstract class DEF{} D.final public class DEF{}E.final abstract class DEF{}答案:D。

Final防止有子类继承,因此可选择D、E。

但final不可以和abstract连用,因此E也错。

2.如果要求子类可以在任何包中访问父类的成员,下面哪一个修饰符可以达到这个目标的最为严格的修饰符?A.public B.private C.protected D.无修饰符答案:C。

A和C都可以做到这点,但A更为宽松,不仅仅是任何包中的子类,而且任何包中和包外的类都可以访问它。

D只能被同一个包的类访问,所以D不符合要求。

而B比D更为严格。

3.程序的封装性是如何实现的?A.由应用程序的设计者实现B.由应用程序的使用者实现C.由应用程序的设计和使用者实现D.由操作系统实现答案:A。

4.下列哪个选项是错误的?A.子类对象可以转化成父类对象B.父类对象一般不转化成子类对象C.子类对象与父类对象之间不能转化D.子类对象转化为父类对象后,对于子类与父类共有的方法,仍然调用子类的方法。

答案:C。

5.下列哪个选项能体现Java语言的多态性?A.匿名类B.布类C.方法重载D.方法覆盖答案:C。

6.下列哪个选项正确?A.Error类是一个RuntimeException异常B.任何抛出一个RuntimeException异常的语句必须包含在try块。

C.任何抛出一个Error对象的语句必须包含在try块。

D.任何抛出一个Exception异常的语句必须包含在try块。

答案:DError代表程序中不可捕获的问题,与Exception类同在一个层次,而RuntimeException 是Exception的子类,所以Error类不可能是一个RuntimeException类型的异常;抛出一个RuntimeException异常不一定要在try块,它是由JVM正常抛出,不需要throw和throws语句,因而也不一定要有catch语句去捕获,所以可以不出现在try块中;Error类型的问题是不可恢复的,多以没有规定要去捕获Error,因而也可以不出现在try块中;对于抛出一个Exception对象的语句,如果没有包含在try块之,有可能编译不能通过,因此选项D是必须的。

7.有如下程序,给出程序运行结果?import java.io.*;public class ExceptionTest{ public static void main(String args[]){ try{ methodA(); }catch(IOException e){ System.out.println(“Caught Exception”);}public void methcdA(){ throw new IOException(); }}}A.代码不能编译B.输出:Caught ExceptionC.输出:CaughtIO Exception D.程序正常运行后无任何信息输出答案:A首先,methcdA是非静态方法,不能出现在main中;其次,就算methcdA是静态方法,IOException是可检测异常,必须被catch捕获或是被throws声明,但程序中没有声明throws,所以try语句块不可能抛出IOException这个异常,而catch也就谈不到捕获它了,所以两个条件都没有满足,编译同样错误。

在methcdA方法定义语句的前面加static,后面加上throws IOException,程序就可以调试通过了。

8.有如下程序,在程序的point x处增加如下哪个选项程序才能通过编译?public class ExceptionTest{ calss TestException extends Exception{}public void runTest() throws TestException{}public void test() //point x{ runTest(); }}A.throws Exception B.catch(Exception)C.throws RuntimeException D.catch(TestException)答案:A没有try就不能有catch,所以B,D错;而C里边的RuntimeException是Exception 的子类,不能用捕“小鱼”的工具去捕“大鱼”,所以错误;由于runTest()抛出的是TestExcption,而TestExcption又是Excption的子类,因此用到runTest方法就必须抛出Excption异常。

9.有如下程序,该程序的运行结果是?public class Exc_4{ public static void main(String args[]){ try{ return; }finally{ System.out.println(“Finally”); }}}A.程序无输出B.程序输出“Finally”C.代码可以通过编译但执行时产生异常D.因为缺少catch块所以编译出错答案:B程序中有catch则必须有try,但反之不成立,所以D不对;关于try-catch-finally 的问题,程序中如果遇到return,则finally块先被执行,然后再执行return,而finally 块后面的语句将不被执行。

如果遇到System.exit(1),则退出JVM,整个程序退出,当然finally块其后的语句都不执行。

10.有如下程序,如果methodA()抛出IOException异常,该程序的运行结果是?class Exc_5{ public static void main(String args[]){ try{ methodA(); }catch(IOException e){ System.out.println(“caught IOException”); }catch(Exception e){ System.out.println(“caught Exception”);} } }}答案:caught IOException如果methodA()抛出IOException异常,被语句5捕获,输出“caught IOException”四、编程题1.试编写出要创建一个员工类Employee。

相关文档
最新文档