博学谷——让IT教学更简单,让IT学习更有效
}
class Test02 { }
public static void main(String[] args) { }
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\}
void breathe(); void run(); void eat(){};
博学谷——让IT教学更简单,让IT学习更有效
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(); } }
五、简答题
1、什么是方法重写?
在继承关系中,子类的方法与父类的某一方法具有相同的方法名、返回类型和参数列表,则称子类的该方法重写(覆盖)父类的方法。
2、什么是多态?
多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。
3、抽象类和接口的区别?
在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。
六、编程题
请按照题目的要求编写程序并给出运行结果。
1、 设计一个学生类Student和它的一个子类Undergraduate,要求如下:
博学谷——让IT教学更简单,让IT学习更有效
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章 多线程
一、填空题
博学谷——让IT教学更简单,让IT学习更有效
1、一个应用程序中有多条并发执行的线索,每条线索都被称作一个线程______,它们会交替执行,彼此
间可以进行_通信_____。
2、在实现多线程的程序时有两种方式,一是通过继_Thread_____承类,二是通过实现Runnable______接口。
3、yield()方法只能让相同优先级或者更高优先级、处于_就绪_____状态的线程获得运行的机会。 4、在Java语言中,同步方法需要用到关键字_synchronized_,对于同步方法而言无需指定同步锁,
它的同步
锁是方法所在的_对象_____,也就是_this_____(关键字)。
5、在多任务系统中,每个独立执行的程序称之为_线程_____,也就是“正在运行的程序”。
6、线程的整个生命周期分为五个阶段,分别是_新建_____、就绪______、_运行_____、_阻塞_____、和死亡_____。
7、线程的优先级用1~10之间的整数来表示,其中__10___代表优先级最高,__1___代表优先级最低。 8、在Thread类中,提供了一个start()方法,该方法用于启动线程______,当新线程启动后,系统会自动调用__run()____方法。
9、要想解决线程间的通信问题,可以使用__wait()____、notify()______、_notifyALL()_____方法。 10、要将某个线程设置为后台线程,需要调用该线程的_setDaemon(true)_____方法,该方法必须在
_start()_____方法之前调用。
二、判断题
1、当我们创建一个线程对象时,该对象表示的线程就立即开始运行。错 2、如果前台线程全部死亡,后台线程也会自动死亡。对 3、同步代码块中的锁对象可以是任意类型的对象。对