Java程序设计基础(微课版)(第2版)第5章习题与答案_第1页
Java程序设计基础(微课版)(第2版)第5章习题与答案_第2页
Java程序设计基础(微课版)(第2版)第5章习题与答案_第3页
Java程序设计基础(微课版)(第2版)第5章习题与答案_第4页
Java程序设计基础(微课版)(第2版)第5章习题与答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章习题练习与参考答案第一部分:习题一、选择题1.采用()关键字修饰该类,则该类不能被继承。A.privateB.finalC.publicD.stop2.以下java程序代码,执行后的结果是()A.FredB.trueC.编译错误D.运动时抛出异常3.以下关于Object类的说法正确的是()A.Java中所有的类都直接或间接继承自Object,无论是否明确的指明,无论其是否是抽象类。B.Java中的接口(interface)也继承了Object类C.利用"=="比较两个对象时,Java调用继承自Object的equals方法,判断是否相等。D.如果类的定义中没有重新定义toString()方法,则该类创建的对象无法使用toStrig()方法。4.下列代码输出结果为()A.动物可以移动狗可以跑和走狗可以吠叫B.动物可以移动动物可以移动狗可以吠叫C.运行错误D.编译错误5.Java类之间的继承关系是()A.多重的B.单重的C.线程的D.不能继承6.在Java中,一个类中可同时定义多个同名的成员方法,但这些同名方法的形式参数的个数、类型或顺序不相同,这种面向对象程序特性称为()A.隐藏B.覆盖C.重载D.继承7.已知类B是类C的父类,()语句不正确A.Bx1=newB();B.Bx1=newC();C.Cx1=newC();D.Cx1=newB();8.子类调用父类的构造方法,描述正确的是()A.子类定义了自己的构造方法,就不会调用父类的构造方法B.子类必须通过this关键字调用父类的构造方法C.如果子类的构造方法没有通过super调用父类的构造方法,那么子类会先调用父类的不含参数的默认构造方法,再调用子类自己的构造方法D.创建子类对象时,先调用子类自己的构造方法,然后调用父类的构造方法9.下面关于包的说法中,正确的是()A.定义包必须是Java程序的第一条语句B.定义包不必是Java程序的第一条语句C.包的名称必须大写D.包的名称必须小写10.一个类只能被自己包中的类访问,类前面加()关键字A.缺省B.protectedC.publicD.private第2题代码:publicclassTest{

publicstaticvoidmain(String[]args){

Objecto=newObject(){

publicbooleanequals(Objectobj){

returntrue;

}

};

System.out.println(o.equals("Fred"));

}

}第4题代码:classAnimal{

publicvoidmove(){

System.out.println("动物可以移动");

}

}

classDogextendsAnimal{

publicvoidmove(){

System.out.println("狗可以跑和走");

}

publicvoidbark(){

System.out.println("狗可以吠叫");

}

}

publicclassTestDog{

publicstaticvoidmain(Stringargs[]){

Animala=newAnimal();

Animalb=newDog();

a.move();

b.move();

b.bark();

}

}二、编程题1.定义Person类,有4个属性:Stringname、intage、Stringschool和Stringmajor。①定义Person类的3个构造方法:第一个构造方法Person(Stringn,inta)设置类的name和age属性;第二个构造方法Person(Stringn,inta,Strings)设置类的name、age和school属性;第三个构造方法Person(Stringn,inta,Strings,Stringm)设置类的name、age、school和major属性。②在main方法中分别调用由不同的构造方法创建的对象,并输出其属性值。2.设计并封装Student类,包含有必要的成员属性和方法,其中成员属性中包含属性teacher(班主任),将该属性置为静态的,在主类中创建若干名学生对象(对象数组实现),并输出各学生的信息以及班主任信息。

第二部分:参考答案一、选择题答案与解析1.答案:B解析:final修饰的类不能被继承(最终类)。private修饰类只能在内部类中使用;public修饰类可以被继承;stop不是Java关键字。2.答案:B解析:这是匿名内部类重写了equals方法,无论传入什么参数都返回true。所以o.equals("Fred")返回true。3.答案:A解析:A正确,所有Java类都直接或间接继承自Object。B错误(接口不继承类);C错误(==比较引用地址,equals是方法调用);D错误(即使不重写也能使用Object的默认toString)。4.答案:D解析:编译错误!b的声明类型是Animal,Animal类中没有bark()方法。虽然b实际引用的是Dog对象,但编译器只看声明类型。需要强制类型转换:((Dog)b).bark()。5.答案:B解析:Java是单继承,一个类只能有一个直接父类(extends后面只能写一个类)。但可以通过接口实现多重继承的效果。6.答案:C解析:方法重载(Overload):同一个类中,方法名相同,参数列表(个数、类型、顺序)不同。覆盖(Override)是子类重写父类方法。7.答案:D解析:向上转型是自动的(父类引用指向子类对象),向下转型需要强制转换。Cx1=newB();错误,因为B是父类,不能直接赋值给子类引用。8.答案:C解析:子类构造方法默认先调用父类无参构造super(),再执行自己的构造代码。A错误(总会调用父类构造);B错误(用super不是this);D错误(先父类后子类)。9.答案:A解析:package语句必须是Java源文件的第一条有效语句(注释和空行除外)。包名惯例是小写,但不是必须的语法要求。10.答案:A解析:缺省(默认)访问权限:只能被同一个包中的类访问。protected是包内+子类;public是所有;private是本类内。二、编程题参考答案第1题参考答案程序代码:classPerson{

Stringname;

intage;

Stringschool;

Stringmajor;

//构造方法1:name和age

publicPerson(Stringn,inta){

=n;

this.age=a;

}

//构造方法2:name、age、school

publicPerson(Stringn,inta,Strings){

this(n,a);//调用第一个构造方法

this.school=s;

}

//构造方法3:全部属性

publicPerson(Stringn,inta,Strings,Stringm){

this(n,a,s);//调用第二个构造方法

this.major=m;

}

//输出信息

voidshowInfo(){

System.out.println("姓名:"+name);

System.out.println("年龄:"+age);

if(school!=null)System.out.println("学校:"+school);

if(major!=null)System.out.println("专业:"+major);

System.out.println("-------------------");

}

}

publicclassPersonTest{

publicstaticvoidmain(String[]args){

Personp1=newPerson("张三",20);

Personp2=newPerson("李四",21,"北京大学");

Personp3=newPerson("王五",22,"清华大学","计算机科学");

p1.showInfo();

p2.showInfo();

p3.showInfo();

}

}运行结果:姓名:张三年龄:20-------------------姓名:李四年龄:21学校:北京大学-------------------姓名:王五年龄:22学校:清华大学专业:计算机科学第2题参考答案程序代码:classStudent{

privateStringname;

privateintage;

privateStringid;

//静态属性:班主任(所有学生共享)

publicstaticStringteacher="李老师";

//构造方法

publicStudent(Stringname,intage,Stringid){

=name;

this.age=age;

this.id=id;

}

//getter和setter(封装)

publicStringgetName(){returnname;}

publicvoidsetName(Stringname){=name;}

publicintgetAge(){returnage;}

publicvoidsetAge(intage){this.age=age;}

publicStringgetId(){returnid;}

publicvoidsetId(Stringid){this.id=id;}

//输出学生信息

publicvoidshowInfo(){

System.out.println("学号:"+id);

System.out.println("姓名:"+name);

System.out.println("年龄:"+age);

System.out.println("班主任:"+teacher);

System.out.println("-------------------");

}

}

publicclassStudentTest{

publicstaticvoidmain(String[]args){

//对象数组创建3名学生

Student[]students=newStudent[3];

students[0]=newStudent("张三",20,"2024001");

students[1]=newStudent("李四",21,"2024002");

students[2]=newStudent("王五",19,"2024003");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论