《Java基础入门》 - 课后习题要点 下载本文

博学谷——让IT教学更简单,让IT学习更有效

3、不存在继承关系的情况下,也可以实现方法重写。错 4、package声明语句应当为Java源文件中的第一条语句。对 5、接口中只能定义常量和抽象方法。错(对) 三、选择题

1、在类的继承关系中,需要遵循以下哪个继承原则?B

A、多重 B、单一 C、双重 D、不能继承

2、在Java语言中,以下哪个关键字用于在方法上声明抛出异常?C

A.try B.catch C.throws D.throw

3、关于super关键字以下说法哪些是正确的?(多选)ABD(ABC)

A、super关键字可以调用父类的构造方法 B、super关键字可以调用父类的普通方法

C、super与this不能同时存在于同一个构造方法中 D、super与this可以同时存在于同一个构造方法中 4、以下说法哪些是正确的?(多选)ABCD

A、Java语言中允许一个类实现多个接口 B、Java语言中不允许一个类继承多个类

C、Java语言中允许一个类同时继承一个类并实现一个接口 D、Java语言中允许一个接口继承一个接口

5、类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?C

A、public B、 protected C、 private D、default 6、关于抽象类的说法哪些是正确的?(多选)AC

A、抽象类中可以有非抽象方法。

B、如果父类是抽象类,则子类必须重写父类所有的抽象方法。 C、不能用抽象类去创建对象。 D、接口和抽象类是同一个概念。

7、在Java中,要想让一个类继承另一个类,可以使用以下哪个关键字?C

A、inherits B、implements C、extends D、modifies 8、System类位于以下哪个包中?D

A、java.io B、java.util C、java.awt D、java.lang 9、已知类的继承关系如下: A

class Employee;

class Manager extends Employee; class Director extends Employee; 则以下语句能通过编译的有哪些?

A、 Employee e=new Manager(); B、 Director d=new Manager(); C、 Director d=new Employee(); D、Manager m=new Director(); 10、编译运行下面的程序,结果是什么?B

public class A {

public static void main(String[] args) { }

void test() {

System.out.print(\B b = new B(); b.test();

博学谷——让IT教学更简单,让IT学习更有效

}

class B extends A { }

void test() { }

super.test();

System.out.print(\}

A、产生编译错误 B、代码可以编译运行,并输出结果AB C、代码可以编译运行,但没有输出 D、编译没有错误,但会产生运行时异常

四、分析题

阅读下面的程序,分析代码是否能编译通过,如果能编译通过,请列出运行的结果。如果不能编译通过,请说明原因。

代码一:进入catch代码块

进入finally代码块(程序编译能通过,这是因为int x = 2 / 0; System.out.println(x);这两条语句使用了try块,捕获了程序因为除以0而产生的异常情况,之后程序会继续向下执行,输出“进入catch代码块”,“进入finally代码块”。)

public class Test01 {

public static void main(String[] args) { }

try {

int x = 2 / 0;

System.out.println(x);

} catch (Exception e) { }

System.out.println(\进入catch代码块\System.out.println(\进入finally代码块\} finally {

}

代码二:不能,final修饰shout,不能被重写(程序编译不通过,这是因为在程序中使用了final关键字修饰Animal类,使得Animal类不能被继承。shout()方法中同样使用了final关键字,使得该方法不能被重写。)

final class Animal { }

class Dog extends Animal { }

class Test02 {

public static void main(String[] args) { public void shout() { }

// 程序代码

public final void shout() { }

// 程序代码

博学谷——让IT教学更简单,让IT学习更有效

}

}

Dog dog=new Dog();

代码三:动物叫! 汪汪……

class Animal { }

class Dog extends Animal { }

public class Test03 { }

public static void main(String[] args) { }

Animal animal = new Dog(); animal.shout();

void shout() { }

super.shout();

System.out.println(\汪汪……\void shout() { }

System.out.println(\动物叫!\

代码四:不能,Dog没有实现Animal所有方法,Dog为抽象类不能创建对象(程序编译不通过,因为接口中定义的方法不能有方法体,所以定义的eat()方法是错误的。接口中的方法必须在子类中全部实现,由于run()方法在子类中并没有重新实现,所以这也是错误的。)

interface Animal { }

class Dog implements Animal {

public void breathe() {

System.out.println(\’m breathing\}

public void eat() {

System.out.println(\’m eathing\} }

public class test04 {

public static void main(String [] args) { Dog dog = new Dog(); dog.breathe(); dog.eat(); void breathe(); void run(); void eat(){};

博学谷——让IT教学更简单,让IT学习更有效

} }

五、简答题 1、什么是方法重写?

在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。

2、什么是多态?

多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。 3、抽象类和接口的区别?

在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。 接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。

六、编程题

请按照题目的要求编写程序并给出运行结果。

1、 设计一个学生类Student和它的一个子类Undergraduate,要求如下:

1) Student类有name(姓名)、和age(年龄)属性,一个包含两个参数的构造方法,用于给name和

age属性赋值,一个show()方法打印Student的属性信息

2) 本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个

参数用于给继承的name和age属性赋值,第三个参数给degree专业赋值,一个show()方法用于打印Undergraduate的属性信息

3) 在测试类中分别创建Student对象和Undergraduate对象,调用它们的show()。 2、设计一个Shape接口和它的两个实现类Square和Circle,要求如下:

1)Shape接口中有一个抽象方法area(),方法接收有一个double类型的参数,返回一个double类型的结果

2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回 在测试类中创建Square和Circle对象,计算边长为2的正方形面积和半径为3的圆形面积

3、自定义一个异常类NoThisSoundException和Player类,在Player的play()方法中使用自定义异常,要求入下:

1) NoThisSongException继承Exception类,类中有一个无参和一个接收一个String类型参数的

构造方法,构造方法中都使用super关键字调用父类的构造方法。

2) Player类中定义一个play(int index)方法,方法接收一个int类型的参数,表示播放歌曲的索

引,当index>10时,paly()方法用throw关键字抛出NoThisSongException异常,创建异常对象时,调用有参的构造方法,传入“您播放的歌曲不存在”。

3) 在测试类中创建Player对象,并调用play()方法测试自定义的NoThisSongException异常,使

用try…catch语句捕获异常,调用NoThisSongException的getMessage()方法打印出异常信息。

第5章 多线程

一、填空题