《JAVA语言与面向对象程序设计课后习题答案.pdf》由会员分享,可在线阅读,更多相关《JAVA语言与面向对象程序设计课后习题答案.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章 面向对象软件开发概述1.简述面向过程问题求解和方向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。面向过程的编程语言:C,Pascal,Foratn面向对象的编程语言:C+,Java,C#o2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对
2、象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一个具体的电视机,如“我家那台电视机3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学生”,试为这个对象设计状态与行为。答:对象都具有状态和行为。对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。学生的状态:
3、姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生”与对象“大学生”是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。对象“班级”与对象“学生”是包含关系。对象“学生”与对象“大学生”是继承关系。5.有人说“父母”和 子女”之间是继承的关系。这种说法是否正确?为什么?答:“父母”和“子女之间不是面向对象意义上的“继承”关系。因为这里的继承关系是“is a”的关系,“男人”与 人 之间可以说是继承关系。6.面向对象的软件开发包括哪些过程?OOA
4、模型包括哪三个层次?OOD模型在00A模型的基础上引入了哪些工作?答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis.00A)、面 向对象的设计(Object oriented design,OOD)、面 向对象的实现(Object orientedprogramming,OOP)三个阶段。面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。面向对象的设计将在00A模型的基础上引入界面管理、任务管理和数据管理三部分的内容。7.面向对象的程序设计方法有哪些优点?答:由于对象的概
5、念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,使得上述“分析一设计一实现”的开发过程也更加高效、快捷。第 2 章 Java概述1.简述Java编译和运行的基本方法。答:编译可以使用JDK中的工具javac.exe。例如:javac HelloWorldApp.java运行Java程序则可以使用JDK提供的解释器是java.exe。例如:java HelloWorldApp2.下载并安装JDK软件包,3.尝试查看其中的JDK文档。答:Java编程的基本工具包是JDK(Java Development
6、 Kit)o JDK是Sun公司免费提供的开发、运行Java程序的基本软件,它可以在Windows及Unix两种平台下使用。常用的版本是JDK1.2.2,JDK1.3.0,JDK1.4等。可以从http:网站下载较新的版本,如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.print
7、lWelcom to java vorldH);4.编写一个Java Applet,使之能够在浏览器中显示“Welcome to Java Applet World!”的字符串信息。答:见程序。import java.awt.*;import java.applet.*;public class Ex2_4 extends Applet /an appletpublic void paint(Graphics g)g.drawString(Welcome to Java Applet World!,20,20);5.编写一个HTML文件,将上题中生成的Applet字节码嵌入其中,并用WWW浏览
8、器观看这个HTML文件规定的Web页面。答:与上一题同。6.编写一个程序,能够从键盘上接收两个数字,然后计算这两个数的积。答:见程序。import java.io.*;public class Ex2_6(public static void main(String args)(String s=”;double c=0;double d=0;try(BufferedReader in=new BufferedReader(new InputStreamReader(System.in);System.out.print(请输入一个数:);s=in.readLine();c=DoubIe.pa
9、rseDouble(s);System.out.print(请输入另个数:);s=in.readLine();d=Double.parseDouble(s);catch(IOException e)System.out.printing这两个数的积为:”+(c*d);)7.编写一个程序,从两个文本框中接收两个数字,然后计算这两个数的积。答:见程序。import java.applet.*;import java.awt.*;import java.awt.event.*;public class Ex2_7 extends Applet(TextField ini=new TextField(
10、lO);TextField in2=new TextField(lO);Button btn=new Button(”求两个数的积”);Label out=new Label(用于显示结果的标签)public void init()(setLayout(new FlowLayout();add(ini);add(in2);add(btn);add(out);btn.addActionListener(new BtnActionAdapter();class BtnActionAdapter implements ActionListener(public void actionPerfonne
11、d(ActionEvent e)(String si=inl.getText();double dl=Double.parseDouble(si);String s2=in2.getText();double d2=Double.parseDouble(s2);double result=dl*d2;out.setText(dl+X+d2+result);8.常用的集成开发工具有哪些?各有什么特点?答:常用的集成开发工具包括:Borland公司出品的Jbuilder,Sun公司出品的Java Workshop,IBM公司的Visual Age for Java,Oracle公司的Java De
12、velop,等等。另外,Symantec公司的VisualC afe也是著名的Java开发工具。近来,氏lipse也是使用很广的集成开发工具。第3章 数 据 运 算、流控制、数组1.简述Java程序的构成。如何判断主类?下面的程序有几处错误?如何改正,这个程序的源代码应该保存成什么名字的文件?public class MyJavaClasspublic static void main()System,out.printin A m I wrong?);)System.out.p rin tin(程序结束。);答:一个复杂的程序可由一个至多个Java源程序文件构成,每个文件中可以有多个类定义。
13、一般的Java源程序文件由以下三部分组成:package 语句;(0句一1句)im port语句;(0句一多句)类定义(1个一多个类定义)这里所说的主类是指程序中含有main()方法的类。上面的示例程序中的错误主要在于拼写,如:点及分号应该用西文的;printin中的大写字母I应改为小写字母1;另外,main。方法应该带参数,改为:public static void main(String argvs)import java.applet.*;import java.awt.*;import java.awt.event.*;public class Ex2_7 extends Applet
14、(TextField ini=new TextField(lO);TextField in2=new TextField(lO);Button btn=new Button(”求两个数的积”);Label out=new Label(用于显示结果的标签)public void init()(setLayout(new FlowLayout();add(ini);add(in2);add(btn);add(out);btn.addActionListener(new BtnActionAdapter();)class BtnActionAdapter implements ActionListe
15、ner(public void actionPerformed(ActionEvent e)(String si=inl.getText();double dl=Double.parseDouble(si);String s2=in2.getText();double d2=Double.parseDouble(s2);double result=dl*d2;out.setText(dl+X+d2+”=+result);2.Java有哪些基本数据类型?写出int型所能表达的最大、最小数据。答:Java中定义了4类/8种基本数据类型:(1)逻辑型-boolean(2)整数型-byte,short
16、,int,long(3)浮点数型-float,double(4)字符型char其中整型int占4个字节,其范围为-2147483648-2147483647。3.Java的字符采用何种编码方案?有何特点?写出五个常见的转义符。答:char(字符型)是用Unicode编码表达的字符,在内存中占两个字节。由于Java的字符类型采用了一种新的国际标准编码方案Unicode编码,这样便于东方字符和西方字符处理,这样与其他语言相比,Java处理多语种的能力大大加强。常见的转义符,如:,单引号字符双引号字符W 反斜杠字符r 回车 n换行4.Java对标识符命名有什么规定,下面这些标识符哪些是对的?哪些是错
17、的?错在哪里?(l)MyGame(2)_isHers(3)2JavaProgram(4)Java-Visual-Machine(5)_$abc答:标识符可以由编短者自由指定,但是需要遵循一定的语法规定。标识符要满足如下的规定:(1)标识符可以由字母、数字和下划线(_)、美元符号($)组合而成。(2)标识符必须以字母、下划线或美元符号开头,不能以数字开头。在实际应用标识符时,应该使标识符能一定程度上反映它所表示的变量、常量、对象或类的意义,这样程序的可读性会更好。题中的标识符中的(3)不对,因为用数字开头了,(4)也不对,因为其中用了减号。5.什么是常量?什么是变量?字符变量与字符串常量有何不同
18、?答:常量是在程序运行的整个过程中保持其值不改变的量。变量是在程序的运行过程中数值可变的数据,通常用来记录运算中间结果或保存数据。字符变量中存放一个字符,字符串常量中存放一串字符。6.什么是强制类型转换?在什么情况下需要用到强制类型转换?答:强制类型的基本方式是指用以下方式显式地进行数据类型的转换:(类型)表达式一般地说,在赚值运算符两侧的类型不一致的情况下,则需要进行自动或强制类型转换。变量从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换,Java会自动转换;而将变量从较长的数据类型转换成较短的数据类型时,则必须做强制类型转换。7.Java有哪些算术运算符、
19、关系运算符、逻辑运算符、位运算符和赋值运算符?试列举单目和三目运算符。答:在Java中,按照运算符功能来分,基本的运算符有下面几类:1.算术运算符(+,*,/,%,+,一)2.关系运算符(,=,)5.赋值运算符(=,及其扩展赋值运算符如+=)6.条件运算符(?:)7.其他(包括分量运算符,下标运算符口,实例运算符instanceof,内存分配运算符new,强制类型转换运算符(类型),方法调用运算符()等)其中,单目运算符如而三目运算符只有一个,即条件运算符(?:)。8.编写一个字符界面的Java Application程序,接受用户输入的一个浮点数,把它的整数部分和小数部分分别输出。答:见程序
20、。/*原来的程序public class MyJavaClass(public static void main()(Sy stem.out.printing Am I wrong?1);)Sy stem.out.printing程序结束。”);*/public class Ex3_l(public static void main(String args)(System.out.println(uAm I wrong?);System.out.printin(程序结束 ”);)9.编写一个字符界面的Java Application程序,接受用户输入的10个整数,比较并输出其中的最大值和最小值
21、。答:见程序。import java.io.*;public class Ex3_9(public static void main(String args)(intN=10;int a=new intN;声明数组并分配空间try(BufferedReader in=new BufferedReader(new InputStreamReader(System.in);for(int i=0;iN;i+)System.out.print(请输入第”+(i+l)+”个整数:String s=in.readLine();ai=Integer.parselnt(s);)int max=a0;int
22、min=a0;for(int i=l;iN;i+)if(max ai)min=ai;)System.out.println(最大数为:“+max);System.out.println(最小数为:+min);catch(lOException e)1 0.编写个字符界面的Java Application程序,接受用户输入的字符,以“铲 标志输入的结束;比较并输出按字典序最小的字符。答:见程序。import java.io.*;public class Ex3_10public static void main(String args)(char min=Auffff;System.out.pr
23、int(请输入一串字符,以#结束:);while(true)(char c=*;try(c=(char)System.in.read();catch(IOException e)if(c=#)break;if(min c)min=c;)System.out.println(n其中最小的字符是:+min);)11.结构化程序设计有哪三种基本流程?分别对应Java中的哪些语句?答:任何程序都可以且只能由三种基本流程结构构成,即顺序结构、分支结构和循环结构。顺序结构直接书写,分支结构用if及switch语句书写,循环结构用for、while及do语句来书写。12.编写一个Java程序,接受用户输入的
24、一个1-12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应月份的天数。答:见程序。importjava.io.*;public class Ex3_12(public static void main(String args)(lryBufferedReader in=new BufferedReader(new InputStreamReader(System.in);int a=0;doSystem.out.print(请输一个 1 12的整数:*);String s=in.readLine();a=Integer.parselnt(s);wh
25、ile(a 12);switch(a)case 1:System.out.println(一 月)break;case 2:System.out.println(二月)break;case 3:Syslem.oul.println(“三月 );break;case 4:System.out.println(四月)break;case 5:System.out.println(“五月)break;case 6:System.oul.println(六月)break;case 7:System.out.println(七月)break;case 8:System.out.println(八 月)b
26、reak;case 9:System.out.println(九月)break;case 10:System.out.println(“十月);break;case 11:System.out.println(,_|1 月 );break;case 12:System.out.println(十二月);break;default:break;)catch(IOException e)I13.在 个循环中使用break,continue和return语句有什么不同的效果?答:break是结束循环;continue是直接进行下一次循环;return则是结束整个函数的调用。14.编写图形界面下的Ja
27、va Applet程序,接受用户输入的两个数据为上、下限,然后10个一行输出上、下限之间的所有素数。i m port j ava.applet.*;import java.awt.*;import java.awt.event.*;public class Ex3_ 14 extends Applet(TextField ini=new TextField(lO);TextField in2=new TextField(lO);Button btn=new Button(求两个数之间的素数”);TextArea out=new TextArea(10,100);用于输出public void
28、init()(setLayout(new FlowLayout();add(inl);add(in2);add(btn);add(out);btn.addActionListener(new BtnActionAdapter();class BtnActionAdapter implements ActionListener(public void actionPerformed(ActionEvent e)(String si=inl.getText();int al=Integer.parselnt(si);String s2=in2.getText();double a2=Integer
29、.parselnt(s2);String result=;结果int ent=0;计算素数的个数for(int i=al;i=a2;i+)if(isPrime(i)result+=(+i);如果是素数,则加入ent+;if(ent%10=0)result+=rn;else result+=ntM;out.setText(result);public boolean isPrime(int a)判断一个数是否是素数(if(a=1 )return false;for(int i=2;ia;i+)if(a%i=0)return false;return true;15.编写程序输出用户指定数据的所有
30、素数因子。答:见程序。importjava.io.*;public class Ex3_15(public static void main(String args)(try(BufferedReader in=new BufferedReader(new InputStreamReader(System.in);System.out.print(请输入一个正整数:”);String s=in.readLine();int a=Integer.parselnt(s);System.out.println(a+”的所有素因子包括:*);for(int i=2;i=a;i+)if(a%i=0&is
31、Prime(i)System.out.println(i);catch(IOException e)public static boolean isPrime(int a)判断一个数是否是素数(if(a=1 )return false;for(int i=2;ia;i+)if(a%i=0)return false;return true;)I16.什么是数组?数组有哪些特点?Java中创建数组需要使用哪些步骤?如何访问数组的个元素?数组元素的下标与数组的长度有什么关系?答:数组是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和下标来惟一地确定数组中的元素。数组要进行
32、定义和分配空间后才能使用。一维数组的定义方式为:type arrayName;或 type arrayName;分配内存空间则要用到运算符n ew,其格式如下:arrayName=new typearraysize;当定义了一个数组,并用运算符new为它分配了内存空间后,就可.以引用数组中的每一个元素了。数组元素的引用方式为:arrayNameindex数组元素的下标从0开始,一直到数组的长度减1。17.数组元素怎样进行缺省的初始化?答:数组元素可以在定义数组的同时进行初始化。例如:int a =1,2,3,4,5;用逗号(,)分隔数组的各个元素,系统自动为数组分配一定的空间。18.编程求一个
33、整数数组的最大值、最小值、平均值和所有数组元素的和。答:见程序。import java.io.*;public class Ex3_18(public static void main(String args)(intN=100;int a=new intN;for(int i=0;iN;i+)ai=(int)(Math.random()*100);11%了筒单,这里赋随机值int sum=0;int max=a0;int min=a0;for(int i=0;iN;i+)sum+=ai;if(max ai)min=ai;System.out.println(最大值:+max);System.
34、out.println(“最小值:+min);System.out.printin(总和:+sum);System.out.println(平均值:+(double)sum/N);)19.求解“约瑟夫问题Z 12个人排成一圈,从1号报数,凡是数到5的人就出队列(出局),然后继续报数,试问最后一人出局的是谁。答:import java.io.*;public class Ex3_19(public static void main(String|args)int N=12;boolean a=new booleanN;队列状态for(int i=0;iN;i+)ai=true;inti=O;当前
35、报数的人的下标int s=0;当前报的数字int ent=0;已有多少人出局while(true)if(ai)s+;如果在队列中,则报数if(s=5)如果数到5System.out.println(i+1);显示该人的序号ai=false;该人出局S 二 0;报的数归0ent+;if(ent=N)break;全部的人都出局,结束i+;到下一个人if(i=N)i=0;因为队伍是一个圆圈2 0.用“埃氏筛法”求2/00以内的素数。2100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉4的倍数,以此类推最后剩下的就是素数。答:见程序。importjava.io.*;public class Ex3
36、_20(public static void main(String args)int N=100;boolean a=new booleanN+l;for(int i=0;i=N;i+)ai=true;for(int i=2;i=N;i+)for(int j=2*i;j=N;j+=i)aj=false;for(int i=2;i=N;i+)if(ai)System.out.println(i);第4章 类、包和接口i .使用抽象和封装有哪些好处?答:抽象可以提供事物的本质特征。封装(Encapsulation)是这样一种编程机制,它把代码和其操作的数据捆绑在一起,从而防止了外部对数据和代码的
37、干扰和滥用,保证了数据和代码的安全性。2.编写一个Java程序片断定义一个表示学生的类student,包括域“学号“、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、“获得班号”、“获得性别”、“获得年龄”、“修改年龄”。classpublic class exercise7 public static void main(String args)Student stu=new Student(,Student,V,200345M,18,H2jffi);System.out.println(stu.toStringO);class Student(private String stu
38、Number;private String stuClass;private String stuName;private int stuAge;Student(String name,String number,int age,String cis)(stuName=name;stuNumber=number;stuClass=cis;stuAge=age;)public String getStuNumber()(、return stuNumber;)public String getStuClass()(return stuClass;Ipublic String getStuName(
39、)(return stuName;)public int getStuAge()(return stuAge;)public void setStuAge(int age)(stuAge=age;)public String toStringO(String infor=学生姓名:+getStuName()+n+”学生年龄:+getStuAge()+n+”学生班级:+getStuClass()+n+学生学号:”+getStuNumber()+“n”;return infor;)3.为student类定义构造方法初始化所有的域,增加 个方法public String toStringO把Sttk
40、lent类对象的所有域信息组合成一个字符串。编写Application程序检验新增的功能。答:见程序。class Ex4_3public static void main(String args)Student s=new 8 山已也”099180761软件专业班”,”李明”,true,18);System.out.println(s);class Student(/“学号、班号、姓名、性别、年龄String id;String classld;String name;boolean sex;int age;public String getld()return id;public Strin
41、g getClassId()return classic!;public String getName()return name;public boolean getSex()return sex;public int getAge()return age;public void setAge(int age)this.age=age;public Student(String id,String classld,String name,boolean sex,int age)-this.id=id;this.classld=classici;this.name=name;public Str
42、ing toStringOthis.age=age;this.sex=sex;return name 4-id+classici+age+,+(sex?男:女);4.什么是最终类,如何定义最终类?试列举最终类的例子。答:最终类是指类被final修饰符所修饰和限定的类,最终类不能被继承,即不可能有子类。如Java中的String类就是最终类。5.如何定义静态域?静态域有什么特点?如何访问和修改静态域的数据?答:对域使用static修饰,则定义了静态域。静态域最本质的特点是:它们是类的域,不属于任何一个类的具体对象实例。它不保存在某个对象实例的内存区间中,而是保存在类的内存区域的公共存储单元。在J
43、ava中,静 态 域(类变量)可以通过类名直接访问,也可以通过实例对象来访问,两种方法的结果是相同的。6.什么是静态初始化器?它有什么特点?与构造方法有什么不同?静态初始化器是由关键字static引导的一对大括号什括起的语句组。它的作用与类的构造方法有些相似,都是用来完成初始化的工作,但是静态初始化器在三点上与构造方法有根本的不同:(1)构造方法是对每个新创建的对象初始化,而(2)静态初始化器是对类自身进行初始化。(3)构造方法是在用new运算符产生新对象时由系统自动执行:而(4)静态初始化器一般不(5)能由程序来调用,(6)它是在所属的类加载入内存时由系统调用执行。(3)不同于构造方法,静态
44、初始化器不是方法,没有方法名、返回值和参数列表。(4)同static方法一样,它不能访问实例域和实例方法。7.如何定义方法?在面向对象程序设计中方法有什么作用?答:方法是类的动态属性,标志了类所具有的功能和操作,用来把类和对象的数据封装在一起。Java的方法与其他语言中的函数或过程类似,是一段用来完成某种操作的程序片断。方法由方法头和方法体组成,其一般格式如下:修饰符1修饰符2 返回值类型 方法名(形式参数列表)throws异常列表方法体各港句;8.什么是抽象方法?它有何特点?如何定义抽象方法?如何使用抽象方法?答:被abstract所修饰的方法叫抽象方法,抽象方法的作用在为所有子类定义一个统
45、一的接口。对抽象方法只需声明,而不需实现,即用分号(;)而不是用 ,格式如下:abstract returnType abstractMethod(paramlist);9.如何定义静态方法?静态方法有何特点?静态方法处理的域有什么要求?答:用static修饰符修饰的方法是仅属于类的静态方法,又称为类方法。与此相对,不用static修饰的方法,则为实例方法。类方法的本质是该方法是属于整个类的,不是属于某个实例的。静态方法中,不能访问实例变量。在类方法中不能使用th is或super。10.什么是访问控制符?有哪些访问控制符?哪些可以用来修饰类?哪些用来修饰域和方法?试述不同访问控制符的作用。答
46、:访问控制符是指public/private/protected等表示访问控制(Access Control)的修饰符,其作用是更好地控制类及其域、方法的存取权限,更好地实现信息的封装与隐藏,方法的访问控制符包括private,protected,public和“默认访问控制符“。类中限定为private的成员(域或方法)只能被这个类本身访问,即私有访问控制。类中的成员缺省访问控制符时,称为缺省访问控制。缺省访问控制的成员可以被这个类本身和同一个包中的类所访问,即包访问控制。类中限定为protected的成员可以被这个类本身,它的子类(包括同一个包中以及不同包中的子类)以及同一个包中所有其他的
47、类访问。类中限定为public的成员可以被所有的类访问。Java中还有一种访问控制符为private proteced,它限定能被本类及其子类可以访问,而包中的其他非子类的类不能访问。类的访问控制符或者为public,或者缺省。(但内部类可以有private、protected等访问控制符O )如果类用public修饰,则该类可以被其他类所访问;若类缺省访问控制符,则该类只能被同包中的类访问。11.修饰符是否可以混合使用?混合使用时需要注意什么问题?答:修饰符可以混合使用,如public static但也要注意一些规则,如final及abstract不能修饰同一个方法。12.什么是继承?什么是
48、父类?什么是子类?继承的特性给面向对象编程带来什么好处?什么是单重继承?什么是多重继承?答:继承(Inheritance)是一个对象获得另一个对象的属性的过程。它的重要性源于它支持按层次分类概念。这与现实世界是一致的,大多数知识因为层次化分类而变得容易掌握(即从I二 至下)。在类的层次关系中,被继承的类称为父类,继承其他类的类称为子类。使用继承,一个对象可以从它父类继承所有的通用属性,而只需定义它特有的属性。所以,正是继承机制可以使一个对象成为个更通用类的一个特例成为可能。一个类只有一个直接父类,称为单重继承;一个类有多个直接父类,则是多重继承。Java语言中采用单重继承。13.如何定义继承关
49、系?为“学生”类派生出“小学生”、“中学生”、“大学生”、“研究生”四个类,其中“大学生”类再派生出“一年级学生”、二年级学生”、“三年级学生”、“四年级学生”四个子类,“研究生 类再派生出“硕士生和 博土生两个子类。答:在Java中,通过extends关键字来定义继承关系。具体示例见源程序。class Ex4_l3public static void main(String args)class Student class Pupil extends Student()class MiddleSchollStudent extends Studentclass UnderGraduateSt
50、udent extends Student)class Graduate extends Student)class Freshman extends UnderGraduateStudentclass Master extends Graduate(class PhD extends Graduate 14.“子类的域和方法的数目一定大于等于父类的域和方法的数目”,这种说法是否 正确?为什么?答:如果考虑到可以子类既可以继承父类的方法,而不能继承私有的方法,那么这种说法是不正确的。15.什么 是 域 的 隐 藏?答:在子类中定义与父类同名的域,称为域的隐藏。16.什 么是方法的覆盖?方法的覆