习题
一、选择题(答案可能不止一个)
1.设有下面两个类的定义:
class Person {}
class Student extends Person {
long id; // 身份证号
int score; // 入学总分
String name; // 姓名
int getScore(){return score;}
}
问:类Person和类Student的关系是( )。
A.包含关系 B.继承关系 C.关联关系 D.无关系,上述类定义有语法错误
2.设有下面的两个类定义:
class AA {
void Show(){
System.out.println(“我喜欢Java!”);
}
class BB extends AA {
void Show(){
System.out.println(“我喜欢C++!”);
}
}
则顺序执行如下语句后输出结果为:( )
AA a; BB b;
a.Show(); b.Show();
A.我喜欢Java! B.我喜欢C++!
我喜欢C++! 我喜欢Java!
C.我喜欢Java! D.我喜欢C++!
我喜欢Java! 我喜欢C++!
3.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为( )。
A、隐藏 B、覆盖 C、重载 D、Java不支持此特性
4.对于子类的构造方法说明,下列叙述中不正确的是( )。
A.子类无条件地继承父类的无参构造方法。
B.子类可以在自己的构造方法中使用super关键字来调用父类的含参数构造方法,但这个调用语句必须是子类构造方法的第一个可执行语句。
C.在创建子类的对象时,将先执行继承自父类的无参构造方法,然后再执行自己的构造方法。
D.子类不但可以继承父类的无参构造方法,也可以继承父类的有参构造方法。
5.给出下面代码:
1) class Parent {
2) private String name;
3) public Parent(){}
4) }
5) public class Child extends Parent {
6) private String department;
7) public Child() {}
8) public String getValue(){ return name; }
9) public static void main(String arg[]) {
10) Parent p = new Parent();
11) }
12) }
那些行将引起错误? ( )
A.第3行 B.第6行 C.第7行 D.第8行
6.类Teacher和Student是类Person的子类;
Person p;
Teacher t;
Student s;
//p, t and s are all non-null.
if(t instanceof Person) { s = (Student)t; }
最后一句语句的结果是: ( )
A.将构造一个Student对象 B.表达式是合法的
C.表达式是错误的 D.编译时正确,但运行时错误
7.对于下列代码:
1) class Person {
2) public void printValue(int i, int j) {//... }
3) public void printValue(int i){//... }
4)}
5) public class Teacher extends Person {
6) public void printValue() {//... }
7) public void printValue(int i) {//...}
8) public static void main(String args[]){
9) Person t = new Teacher();
10) t.printValue(10);
11) }
第10行语句将调用哪行语句?( )
A.line 2 B.line 3 C.line 6 D.line 7
8.对于下列代码:( )
public class Parent {
public int addValue( int a, int b) {
int s;
s = a+b;
return s;
}
}
class Child extends Parent {
}
下述哪些方法可以加入类Child?
A. int addValue( int a, int b ){// }
B.public void addValue (int a, int b ){// }
C.public int addValue( int a ){// }
D.public int addValue( int a, int b )throws MyException {//do }
9.给出下面代码, 那个选项是正确的?( )
public class test{
static int a[] = new a[10];
public static void main(String args[]) {
java程序设计考试题 System.out.println(arr[10]);
}
}
A. 编译时将产生错误 B. 输出零
C. 编译时正确,运行时将产生错误 D. 输出空
二、填空题
1. 是一种软件重用形式,在这种形式中,新类获得现有类的数据和方法,并可增加新的功能。
2.派生类构造方法可以通过关键字 调用基类构造方法。
2.多态是指 ,在Java中有两种多态,一种是使用方法的 实现多态,另一种是使用方法的 实现多态。
3. Java中所有类都是类 的子类。
4.被关键字 修饰的方法是不能被当前类的子类重新定义的方法。
三、思考题
1.比较Overload(方法重载)和Override(方法覆盖)的区别。
2.在创建派生类的对象的时候,基类与派生类中构造方法的调用顺序怎样?
3.比较this和super的区别
4.什么是多态?面向对象程序设计为什么要引入多态的特性?使用多态有什么优点?
四、编程题
1.编写一个学生类 Student ,要求:
(1) 学生类 Student 属性有:
id : long型,代表学号
name : String类对象,代表姓名
age : int型,代表年龄
sex : boolen型,代表性别(其中:true表示男,false表示女)
phone : String类对象,代表
(2) 学生类 Student的方法有:
Student(long i , String n , int a , boolean s , long p) : 有参构造方法,形参表中的参数分别初始化学号、姓名、年龄、性别和。
int getAge() ( ) : 获取年龄作为方法的返回值。
boolean getSex( ) ( ) : 获取性别作为方法的返回值。
long getPhone ( ) : 获取作为方法的返回值。
public String toString( ) : 以 姓名: 的形式作为方法的返回值
2.编写一个圆类,要求:
(1) Circle类的成员变量:radius 半径
(2) Circle类的成员方法:
① Circle() 构造方法,将半径置为0
② Circle(double r) 构造方法,创建Circle对象时将半径初始化为r
③ double getRadius() 获得圆的半径值
④ double getPerimeter() 获得圆的周长
⑤ double gerArea() 获得圆的面积
⑥ void disp() 将圆的半径、周长、面积输出到屏幕
(3) 创建圆的派生类圆柱体类Cylinder,要求如下:
Cylinder类的成员变量:height 表示圆柱体的高
Cylinder类的方法成员:
① Cylinder(double r,double h)构造方法,创建Cylinder对象时将圆半径初始化为r,圆柱高初始化为h
② double getHeight() 获得圆柱体的高
③ double getVol() 获得圆柱体的体积
④ void dispVol() 将圆柱体的体积输出到屏幕
3.按要求编写程序:
(1) 基类:Point (点)类,它封装了:
两个成员变量:
x //点的横坐标,int型
y //点的纵坐标,int型
七个成员方法::
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论