Java练习题 · 面向对象进阶篇
1️⃣ 面向对象进阶篇
一、填空题
- Java 中通过_______关键字实现继承。
- 一个类只能继承_______个父类,但能实现_______个接口。
- _______ 类是所有类的父类,该类中判断两个对象是否相等的方法是_______,取得对象完整信息的方法是_______。
Integer
类是对_______基本数据类型的封装。Float
类是对_______基本数据类型的封装。Double
类是对_______ 基本数据类型的封装。字符类Character
是对_______基本数据类型的封装。- 当子类中定义的方法与父类方法同名且参数类型及个数、返回值类型相同时,称子类方法_______父类方 法,子类默认使用_______方法,使用父类的同名方法,必须使用_______关键字说明。
- 当子类定义的成员变量与父类的成员变量同名时,称子类_______父类的成员变量,子类默认使用_______属性。使用父类的同名成员变量,必须用_______关键字说明。
- 如果子类定义了构造方法,在创建子类对象时首先默认调用_______,然后调用本类的构造方法。
二、选择题
-
不能直接使用
new
创建对象的类是( )。
A. 静态类
B. 抽象类
C. 最终类
D. 公有类 -
为类定义多个名称相同,但参数的类型或个数不同的方法的做法称为( )。
A. 方法重载
B. 方法覆写
C. 方法继承
D. 方法重用 -
定义接口的关键字是( )。
A. extends
B. class
C. interface
D. public -
现在有两个类
A
、B
, 以下描述中表示B
继承自A
的是 ( )。
A. class A extends B
B. class B implements A
C. class A implements B
D. class B extends A -
下面关于子类调用父类构造方法的描述正确的是( )。
A. 子类定义了自己的构造方法,就不会调用父类的构造方法
B. 子类必须通过super 关键字调用父类有参的构造方法
C. 如果子类的构造方法没有通过 super 调用父类的构造方法,那么子类会先调用父类中无参构 造方法,再调用子类自己的构造方法
D. 创建子类对象时,先调用子类自己的构造方法,让后再调用父类的构造方法 -
假设类
X
是类Y
的父类,下列声明对象x
的语句中不正确的是( )。
A. X x = new X();
B. X x = new Y();
C. Y x = new Y();
D. Y x = new X(); -
编译并运行下面的程序,结果是( )。
public class A { public static void main(String args[]){ B b = new B(); b.test(); } void test(){ System.out.print("A"); } } class B extends A{ void test(){ super.test(); System.out.println("B"); } }
A. 产生编译错误,因为类B 覆盖类A 的方法 test()时,降低了其访问控制的级别
B. 代码可以编译运行,并输出结果: AB
C. 代码可以编译运行,但没有输出
D. 代码可以编译运行,并输出结果: A -
( )修饰符所定义的方法必须被子类所覆写。
A. final
B. abstract
C. static
D. interface -
( )修饰符所定义的方法不能被子类所覆写。
A. final
B. abstract
C. static
D. interface -
下面的程序编译运行的结果是( )。
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+","+n); } } interface B{ int K=5; }
A.5,5
B.0,5
C. 0,0
D. 编译程序产生编译结果 -
下面关于接口的说法中不正确的是( )。
A. 接口所有的方法都是抽象的
B. 接口所有的方法一定都是 public类型
C. 用于定义接口的关键字是 implements
D. 接口是Java 中的特殊类,包含全局常量和抽象方法 -
下面关于Java 的说法不正确的是( )。
A. abstract和 final 能同时修饰一个类
B. 抽象类不光可以做父类,也可以做子类
C. 抽象方法不一定声明在抽象类中,也可以在接口中
D. 声明为 final的方法不能在子类中覆写
三、判断题
final
声明的类可以有子类。 ( )- 一个类继承了抽象类,则抽象类中的抽象方法需要在其子类中覆写。 ( )
final
类型的变量是常量,其内容不可改变。 ( )- 一个类不能既是子类又是父类。 ( )
- 子类只能继承父类的成员,但不能修改父类成员。 ( )
- Java 语言只支持单继承,不支持多继承。 ( )
- 子类可以继承父类的所有成员。 ( )
- 一个接口可以继承一个抽象类。 ( )
- 一个接口可以同时继承多个接口。 ( )
- 在程序中
this
和super
调用构造方法时可以同时出现。 ( )
四、 简答题
- 简述 this与 super 关键字的区别。
- 简述方法的重载与覆写的区别。
- 在已有类的基础上派生新的类有什么好处?
- 如何区分子类和父类?子类可以继承父类的哪些内容?
- 什么是多态?实现都态的方法有哪些?
- 接口有哪些特征?如何定义和实现接口?
- 接口和抽象类有哪些区别?
- 简述基本数据类型的自动装箱及自动拆箱操作。
五、编程题
- 定义一个
ClassName
接口,接口中只有一个抽象方法getClassName()
。 设计一个类Company
, 该类实现接口ClassName
中的方法getClassName()
,功能是获取该类的类名称。编写应用程序使用Company
类。 - 建立一个人类(
Person
) 和学生类 (Student
) 功能要求:
A.Person
中包含4个保护型的数据成员name
、address
、sex
、age
分别为字符串、字符串、字符及整型。表示:姓名、地址、性别和年龄。 一个四参构造方法, 一个无参构造方法,及一个输出方法用于显示四种属性。
B.Student
继承Person
, 并增加输出成员math
、english
存放数学和英语成绩。 一个六参构造方法, 一个两参构造方法, 一个无参构造方法,重写输出方法用于显示全部六种属性。 - 定义员工类,具有姓名、年龄、性别属性,并具有构造方法,显示数据方法。定义管理层类, 继承员工类,并有自己的属性:职务、年薪。定义职员类,继承员工类,并有自己的属性:所属部门、月薪。
- 定义类
Shape
表示一般二维图形。Shape
具有抽象方法area
和perimeter
,分别计算形状的面积和周长。试定义一些二维形状类(如矩形、三角形、圆形等),这些类均为Shape
类的子类。 B.Student
继承Person
, 并增加输出成员math
、english
存放数学和英语成绩。 一个六参构造方法, 一个两参构造方法, 一个无参构造方法,重写输出方法用于显示全部六种属性。