一. 填空题(共14题)
1. (填空题)JAVA中子类可以有多个父类吗?回答可以或者不可以_______。(1) 不可以
2. (填空题)JAVA中所有类的祖先类是______。(1) Object
3. (填空题)如果子类和父类不在同一个包中,子类是否继承父类的友好成员?回答是或否______。
(1) 否
4. (填空题)子类通过声明与父类同名的成员变量可以________继承的成员变量。(1) 隐藏
5. (填空题)子类重写的方法类型和父类的方法的类型一致或者是父类的方法的类型的_______,重写的方法的名字、参数个数、参数的_______和父类的方法完全相同。(1) 子类型
(2) 类型
6. (填空题)父类的final方法可以被子类重写吗?回答可以或者不可以_______。
(1) 不可以
7. (填空题)______类中可以有abstract方法。
(1) abstract;抽象
8. (填空题)上转型对象不能操作子类新增的成员变量,不能调用子类新增的方法。上转型对象可以访问子类继承或______的成员变量,可以调用子类继承的方法或子类______的实例方法。
(1) 隐藏
(2) 重写
9. (填空题)一个类的各个子类是通过_______方法体现多态的。
(1) 重写
10. (填空题)
面向抽象编程目的是为了应对________的变化,核心是让类中每种可能的变化对应地交给抽象类的一个______去负责,从而让该类的设计者不去关心具体实现。
(1) 用户需求
(2) 子类
11. (填空题)
请说出E类中【代码1】,【代码2】的输出结果________,__________。
class A {
double f(double x,double y) {
return x+y;
}
}
class B extends A {
double f(int x,int y) {
return x*y;
}
}
public class E {
public static void main(String args[]) {
B b=new B();
System.out.println(b.f(3,5)); //【代码1】
System.out.println(b.f(3.0,5.0)); //【代码2】
}
}
(1) 15.0
(2) 8.0
12. (填空题)
说出下列B类中【代码1】,【代码2】的输出结果_______,________。
class A {
public int getNumber(int a) {
return a+1;
}
}
class B extends A {
public int getNumber (int a) {
return a+100;
}
public static void main (String args[]) {
A a =new A();
System.out.println(a.getNumber(10)); //【代码1】
a = new B();
System.out.println(a.getNumber(10)); //【代码2】
}
}
(1) 11
(2) 110
13. (填空题)
请说出E类中【代码1】~【代码4】的输出结果______,_______,________,________。
class A {
double f(double x,double y) {
return x+y;
}
static int g(int n) {
return n*n;
}
}
class B extends A {
double f(double x,double y) {
double m = super.f(x,y);
return m+x*y;
}
static int g(int n) {
int m = A.g(n);
return m+n;
}
}
public class E {
public static void main(String args[]) {
B b = new B();
System.out.println(b.f(10.0,8.0)); //【代码1】
System.out.println(b.g(3)); //【代码2】
A a = new B();
System.out.println(a.f(10.0,8.0)); //【代码3】
System.out.println(a.g(3)); //【代码4】
}
}
(1) 98.0
(2) 12
(3) 98.0
(4) 9
14. (填空题)
请说出E类中【代码1】~【代码3】的输出结果_____,_____,_______。
class A {
int m;
int getM() {
return m;
}
int seeM() {
return m;
}
}
class B extends A {
int m ;
int getM() {
return m+100;
}
}
public class E {
public static void main(String args[]) {
B b = new B();
b.m = 20;
System.out.println(b.getM()); //【代码1】
A a = b;
a.m = -100;
System.out.println(a.getM()); //【代码2】
System.out.println(b.seeM()); //【代码3】
}
}
(1) 120
(2) 120
(3) -100
二. 单选题(共8题,35.2分)
15. (单选题)
下列哪个叙述是正确的?
A. 子类继承父类的构造方法。
B. abstract类的子类必须是非abstract类。
C. 子类继承的方法只能操作子类继承和隐藏的成员变量。
D. 子类重写或新增的方法也能直接操作被子类隐藏的成员变量。C :子类继承的方法只能操作子类继承和隐藏的成员变量。;
16. (单选题)
下列哪个叙述是正确的?
A. final 类可以有子类。
B. abstract类中只可以有abstract方法。
C. abstract类中可以有非abstract方法,但该方法不可以用final修饰。
D. 不可以同时用final和abstract修饰同一个方法。
E. 允许使用static修饰abstract方法。D :不可以同时用final和abstract修饰同一个方法。
17. (单选题)
假设C是B的子类,B是A的子类,cat是C类的一个对象,bird是B类的一个对象,下列哪个叙述是错误的?
A. cat instanceof B的值是true。
B. bird instanceof A的值是true。
C. cat instanceof A的值是true。
D.bird instanceof C的值是trueD :bird instanceof C的值是true
18. (单选题)
下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?
class A {
static int m;
static void f(){
m = 20 ; //A
}
}
class B extends A {
void f() //B
{ m = 222 ; //C
}
}
class E {
public static void main(String args[]) {
A.f(); // D
}
}
A. m = 20 ;
B. void f()
C. m = 222 ;
D. A.f();B :void f() ;
代码中标注的(A,B,C,D)中,哪一个是错误的?abstract class Takecare {
protected void speakHello() {} //A
public abstract static void cry(); //B
static int f(){ return 0 ;} //C
abstract float g(); //D
}
A. protected void speakHello() {}
B. public abstract static void cry();
C. static int f(){ return 0 ;}
D. abstract float g();B :public abstract static void cry();
下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?
abstract class A {
abstract float getFloat (); //A
void f() //B
{ }
}
public class B extends A {
private float m = 1.0f; //C
private float getFloat () //D
{ return m;
}
}
A. abstract float getFloat ();
B. void f()
C. private float m = 1.0f;
D. private float getFloat ()D :private float getFloat (
21. (单选题)
将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?
class A {
public float getNum() {
return 3.0f;
}
}
public class B extends A {
【代码】
}
A. public float getNum(){return 4.0f;}
B. public void getNum(){ }
C. public void getNum(double d){ }
D. public double getNum(float d){return 4.0d;}B :public void getNum(){ } ;
22. (单选题)
对于下列代码,下列哪个叙述是正确的?
class A {
public int i=0;
A(int m) {
i = 1;
}
}
public class B extends A {
B(int m) {
i = 2;
}
public static void main(String args[]){
B b = new B(100);
System.out.println(b.i); //【代码】
}
}
A. 程序提示编译错误(原因是A类没有不带参数的构造方法)
B. 编译无错误,【代码】输出结果是0。
C. 编译无错误,【代码】输出结果是1。
D. 编译无错误,【代码】输出结果是2。A : 程序提示编译错误(原因是A类没有不带参数的构造方法)
三. 多选题(共1)
23. (多选题)
下列程序中注释的哪两个代码(A,B,C,D)是错误的(无法通过编译)?
class Father {
private int money =12;
float height;
int seeMoney(){
return money ; //A
}
}
class Son extends Father {
int height;
int lookMoney() {
int m = seeMoney(); //B
return m;
}
}
class E {
public static void main(String args[]) {
Son erzi = new Son();
erzi.money = 300; //C
erzi.height = 1.78F; //D
}
}
A. return money ;
B. int m = seeMoney();
C. erzi.money = 300;
D. erzi.height = 1.78F;CD. erzi.money = 300; erzi.height = 1.78F;