} } class B extends A { void test() { super.test(); System.out.println(\ } } 附录B 参考答案 Note B.代码可以编译运行,并输出结果:AB D.编译没有错误,但会运行时会产生异常 A.产生编译错误 C.代码可以编译运行,但没有输出 15.编译运行下面的程序,结果是 A 。 public class A { public static void main(String args[]) { B b = new B(); b.test(); } public void test() { System.out.print(\ } } class B extends A { void test() { super.test(); System.out.println(\ } } A.产生编译错误,因为类B覆盖类A的方法test()时,降低了其访问控制的级别 B.代码可以编译运行,并输出结果:AB C.代码可以编译运行,但没有输出 D.代码可以编译运行,并输出结果:A 16.下面 B 修饰符所定义的方法必须被子类所覆写。 A.final B.abstract C.static D.interface 17.下面 A 修饰符所定义的方法不能被子类所覆写。 A.final B.abstract D.static D.interface 18.下面的程序编译运行的结果是 A 。 public class A implements B { public static void main(String args[]) { int m, n; A a = new A(); m = a.K; n = B.K; System.out.println(m + \,\ } } interface B { int K = 5; 497 Java核心技术精讲 } A.5,5 B.0,5 C.0,0 D.编译程序产生编译结果 19.下面关于接口的说法中不正确的是 C 。 A.接口所有的方法都是抽象的 Note B.接口所有的方法一定都是public类型 C.用于定义接口的关键字是implements D.接口是Java中的特殊类,包含全局常量和抽象方法 20.下面关于Java的说法不正确的是 A A.abstract和final能同时修饰一个类 B.抽象类不光可以做父类,也可以做子类 C.抽象方法不一定声明在抽象类中,也可以在接口中 D.声明为final的方法不能在子类中覆写 3.34.3 判断题 1.没有实例化的对象不能使用。 2.不可以为类定义多个构造方法。 3.使用static声明的方法可以调用非static声明的方法。 4.非static声明的方法可以调用static声明的属性或方法。 5.String对象可以使用==进行内容的比较。 6.垃圾是指无用的内存空间,会被垃圾收集机制回收。 7.构造方法可以有返回值类型的声明。 8.匿名对象是指使用一次的对象,使用之后将等待被垃圾回收。 9.使用static定义的内部类就成为外部类。 10.多个实例化对象之间不会互相影响,因为保存在不同的内存区域之中。 11.final声明的类可以有子类。 12.一个类继承了抽象类,则抽象类中的抽象方法需要在其子类中覆写。 13.final类型的变量是常量,其内容不可改变。 14.一个类不能既是子类又是父类。 15.子类只能继承父类的成员,但不能修改父类成员。 16.Java语言只支持单继承,不支持多继承。 17.子类可以继承父类的所有成员。 18.一个接口可以继承一个抽象类。 19.一个接口可以同时继承多个接口。 20.在程序中,this和super调用构造方法时可以同时出现。 498 √ ) × ) × ) √ ) × ) √ ) × ) √ ) √ ) √ ) × ) √ ) √ ) √ ) × ) √ ) √ ) × ) √ ) × ) ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 附录B 参考答案 3.34.4 简答题 1.String类的操作特点。 答:String类的对象有两种实例化方式。 ? 方式一:直接赋值,只开辟一块堆内存空间,并且对象可以入池; ? 方式二:构造方法,开辟两块堆内存空间,有一块将称为垃圾,不会自动入池,使用intern()方法手工入池。 String对象的比较方法如下所示。 ? ==:比较的是两个字符串对象的内存地址数值; ? equals():字符串内容比较。 字符串对象一旦声明,则内容不可改变,改变的只能是字符串对象的地址指向。 2.简述垃圾对象的产生。 答:垃圾指的是一块无用的引用内存,当将变量设置为null或者长时间不使用时,就将成为垃圾。 3.static方法如何调用?非static方法如何调用? 答:static方法可以使用类名称或实例化对象调用,而非static方法只能依靠实例化对象才可以调用。 4.类与对象的关系是什么?如何创建及使用对象? 答:类规定了对象所具有的属性及行为(方法),类只有通过产生对象才可以分配属性或者是调用方法,对象的创建依靠关键字new创建。 5.举例说明子类对象的实例化过程。 答:当通过关键字new实例化子类对象时,会默认调用父类的无参构造方法,为父类对象实例化,而后才会调用子类的构造方法,为子类对象实例化。 6.简述this与super关键字的区别。 答:this和super都可以调用类中的属性、方法、构造方法,但是this调用的是本类操作,而super是由子类调用父类操作。 7.简述方法的重载与覆写的区别。 答:方法重载是发生在一个类中,方法名称相同、参数的类型及个数不同,不受权限的限制。而覆写是发生在继承关系之中,子类和父类定义了方法名称相同、参数类型及个数、返回值类型完全相同的方法时所发生的操作,在子类覆写父类方法时,被覆写的方法不能拥有比父类更严格的访问权限。 8.在已有类的基础上派生新的类有什么好处? 答:扩充已有类的功能,并且利用方法的覆写扩充已有方法的功能。 9.如何区分子类和父类?子类可以继承父类的哪些内容? 答:子类使用extends继承父类或使用implements实现多个接口,子类可以继承父类中的全部内容,但是对于私有操作属于隐式继承,而非私有操作属于显式继承。 10.什么是多态?实现多态的方法有哪些? 答:多态是面向对象的最后一个主要特征,它本身主要分为两个方面。 ? 方法的多态性:重载与覆写 ? 重载:同一个方法名称,根据不同的参数类型及个数可以完成不同的功能; ? 覆写:同一个方法,根据操作的子类不同,所完成的功能也不同。 Note 499 Java核心技术精讲 ? 对象的多态性:父子类对象的转换。 ? 向上转型:子类对象变为父类对象,格式:父类 父类对象 = 子类实例,自动; ? 向下转型: 父类对象变为子类对象,格式:子类 子类对象 = (子类) 父类实例,强制; 11.接口有哪些特征?如何定义和实现接口? 答:接口之中全部由全局常量及抽象方法所组成,一个类可以同时实现多个接口,在Java中使用interface定义接口,子类使用implements实现接口。 Note 12.接口和抽象类有哪些区别? 答:抽象类及接口区别如下。 No. 1 2 3 4 5 6 7 区 别 抽 象 类 接 口 定义关键字 abstract class interface 组成 常量、变量、抽象方法、普通方法、构造方法 全局常量、抽象方法 权限 关系 使用 设计模式 局限 可以使用各种权限 一个抽象类可以实现多个接口 子类使用extends继承抽象类 模板设计模式 一个子类只能够继承一个抽象类 只能是public 接口不能够继承抽象类,却可以继承多接口 子类使用implements实现接口 工厂设计模式、代理设计模式 一个子类可以实现多个接口 抽象类和接口的对象都是利用对象多态性的向上转型,进行接口或抽象类的实例化操作 13.简述基本数据类型的自动装箱及自动拆箱操作。 答:在JDK 1.5后,基本数据类型可以采用直接赋值的方式为包装类进行对象的实例化操作,而包装类的对象也可以通过直接赋值的方式变回基本数据类型。 3.34.5 编程题 1.编写并测试一个代表地址的Address类,地址信息由国家、省份、城市、街道和邮编组成,并可以返回完整的地址信息。 答案: class Address { private String national; private String provincial; private String city; private String street; private String zipcode; public Address() { } public Address(String national, String provincial, String city, String street, String zipcode) { super(); this.national = national; this.provincial = provincial; this.city = city; this.street = street; this.zipcode = zipcode; 500 附录B 参考答案 } public String toString() { return \国家:\this.national + \,省份:\this.provincial + \,城市:\ + this.city + \,街道:\this.street + \,邮政编码:\this.zipcode; } //setter、getter略 } public class TestDemo { public static void main(String args[]) { Address ad = new Address(\中国\北京\北京市\ System.out.println(ad); } } Note 程序运行结果: 国家:中国,省份:北京,城市:北京市,街道:MLDN,邮政编码:100088 2.定义并测试一个代表员工的Employee类,员工属性包括编号、姓名、基本薪水和薪水增长额,还包括计算增长后的工资总额。 答案: class Employee { private int empno ; //雇员编号 private String ename ; //雇员姓名 private double sal ; //基本工资 private double rate ; //工资增长额 public Employee() { } public Employee(int empno, String ename, double sal, double rate) { super(); this.empno = empno; this.ename = ename; this.sal = sal; this.rate = rate; } public String toString() { return \雇员编号:\this.empno + \,雇员姓名:\this.ename + \,基本工资:\this.sal ; } public void growthin() { //增长薪水 this.sal = this.sal * this.rate ; } //setter、getter略 } public class TestDemo { public static void main(String args[]) { Employee emp = new Employee(7369, \ emp.growthin() ; //工资增长 System.out.println(emp); } 501
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java 试题附参考答案(3)在线全文阅读。
相关推荐: