第四周课堂测试
1、下列说法正确的是(ACD)
A .使用extends关键字定义一个类的子类。
B .Java与C++类似,支持多继承,即子类可以有一个或多个父类。
C .Object是所有类的祖先类。
D .如果子类继承父类的成员变量作为自己的一个成员变量,则该成员变量可以被子类中自己定义的任何实例方法操作。
2、下列说法错误的是(AD)
A .继承的成员变量或方法的访问权限可以由子类重新定义。
B .若子类和父类不在同一包,子类只继承父类中的protected和public访问权限的方法作为子类的方法。
C .继承关系的UML类图用一个实线连接两个类,起始端是子类,重点端是父类,终点端使用空心三角形表示实线的结束。
D .如果在类本身创建一个对象,则该对象不可以通过“.”运算符访问继承的protected变量。
3、如果子类和父类不在同一包中,子类不继承父类的友好成员变量。(A)
A .true
B .false
4、instanceof主要用来判断一个类是否实现了某个接口,或者判断一个实例对象是否属于一个类。(A)
A .true
B .false
5、下列关于Override的说法,正确的是(ABC)
A .子类所声明的成员变量的名字和从父类继承来的成员变量名字相同但类型不同时,子类会隐藏所继承的成员变量。
B .除了继承的方法之外,子类新定义的方法可以操作子类继承的成员变量。
C .子类重写的方法,方法名字、参数个数、参数类型和父类的方法完全相同。
D .重写方法可以操作被子类隐藏的成员变量和方法。
6、子类在重写可以继承的方法时,可以完全按照自己的意图编写新的方法体。重写方法的类型可以是父类方法类型的子类型,不必完全一致。(A)
A .true
B .false
7、某方法在父类的访问权限是public,则子类重写时级别可以是(B)protected。
A .true
B .false
8、下列关于super关键字的说法,正确的是(ACD)
A .如果在子类中想使用被子类隐藏的成员变量或方法,就需要使用关键字super。
B .课本P123代码Example5_7.java中,Average类g()方法里“c=super.f()”调用的是Average类的float f()。
C .子类的构造方法如果没有明显地指明使用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。
D .P124的程序Example5_8,如果UniverStudent子类地构造方法中省略super,则程序默认执行Student类的super()。
9、下列关于final关键字的说法,正确的是(ABCD)
A .final类不能被继承。
B .String类为final类。
C .父类的final方法子类不能重写。
D .final修饰的变量不允许被再次赋值。
10、对象的上转型对象再强制转换为一个子类对象时,该子类对象又具备了子类所有的属性和功能。(A)
A .true
B .false
11、下列说法正确的是(C)
A .父类创建的对象的引用可以赋值给子类声明的对象。
B .上转型对象不能访问子类隐藏的成员变量。
C .上转型对象不能操作子类新增的成员变量。
D .子类对象的上转型对象可以调用子类重写的静态方法。
12、父类中有个public void fight(),子类中有个public void fight( Weapon w),这两个方法的关系是Override.(B)
A .true
B .false
13、public void someMethod(int i)和public int someMethod()是方法重载。(A)
A .true
B .false
14、继承是指父类的某个方法被其子类重写时,可以产生自己的行为和功能。(B)
A .true
B .false
15、下列关于abstract关键字的说法,正确的是(BCDF)
A .可以使用static修饰abstract方法。
B .非abstract类中不可以有abstract方法。
C .不能使用new创建abstract类的对象。
D .不允许使用final和abstract同时修饰一个方法.
E .可以使用public abstract void eat(){};来声明抽象方法eat()。
F .抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
16、下列说法正确的是(C)
A .子类继承父类的构造方法。
B .abstract类的子类必须是非abstract类。
C .子类继承的方法只能操作子类继承和隐藏的成员变量。
D .子类重写或新增的方法也能直接操作被子类隐藏的成员变量。
17、下列注释的哪些代码(A、B、C、D)无法通过编译?(CD)
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 .A
B .B
C .C
D .D
18、下列注释的哪个代码(A、B、C、D)无法通过编译?(D)
class A {
static int m;
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 .A
B .B
C .C
D .D
19、下列代码中标注的(A,B,C,D)中,哪一个是错误的?(B)
abstract class Takecare {
protected void speakHello() {} //A
public abstract static void cry(); //B
static int f()
{ return 0 ;} //C
abstract float g(); //D
}
A .A
B .B
C .C
D .D
20、下列注释的哪个代码(A、B、C、D)无法通过编译?(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 .A
B .B
C .C
D .D
21、将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?(B)
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;}
22、对于下列代码,下列哪个叙述是正确的?(A)
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。
23、下列关于接口的说法,正确的是(BCD)
A .接口体中包含常量、变量和抽象方法三部分。
B .使用关键字interface来定义一个接口。
C .接口体中所有抽象方法的访问权限一定都是public。
D .接口体中只有抽象的方法,没有普通方法。
24、接口体中所有的常量的访问权限都是public,而且都是static常量。(A)
A .true
B .false
25、下列关于实现接口的说法,正确的是(ABC)
A .一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。
B .如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。
C .类重写接口方法时,方法的访问权限一定要明显地用public修饰。
D .子类既可以重写接口中的方法,也可以直接拥有接口中的方法。
26、下列说法错误的是(C)
A .public接口可以被任何一个类实现。
B .友好接口可以被与该接口在同一包中的类实现。
C .可以通过关键字implements声明一个接口是另一个接口的子接口。
D .子接口将继承父接口中的全部方法和常量。
27、下列说法正确的是(BD)
A .UML通过使用实线连接类和它的接口。
B .通过import语句可以引入包中的接口。
C .接口可以调用类中的其他的非接口方法。
D .接口属于引用型变量。
28、下列关于接口的说法,错误的是(D)
A .接口没有提供构造方法。
B .接口中的方法默认使用public、abstract修饰。
C .接口中的属性默认使用public、static、final修饰。
D .接口不允许多继承。
29、接口可以使用new运算符直接产生对象。(B)
A .true
B .false
30、下列说法正确的是(D)
A .一个类最多可以实现两个接口。
B .如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法。
C .如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法。
D .允许接口中只有一个抽象方法。
31、下列四个接口中,错误的是(AB)
interface Takecare {
protected void speakHello(); //A
public abstract static void cry(); //B
int f(); //C
abstract float g(); //D
}
A .A
B .B
C .C
D .D
32、将下列(A,B,C,D)哪个代码替换下列程序中的【代码】不会导致编译错误?(B)
interface Com {
int M = 200;
int f();
}
class ImpCom implements Com {
【代码】
}
A .public int f(){return 100+M;}
B .int f(){return 100;}
C .public double f(){return 2.6;}
D .public abstract int f();
33、下列哪个代码替换程序中的【代码】不会导致编译错误?(C)
interface A {
abstract int getNumber();
}
class B implements A{
【代码】
}
A .protected int getNumber() {return 100;}
B .int getNumber() {return 100;}
C .public int getNumber() {return 100;}
D .int getNumber() {return ‘a’+‘b’}
34、XX是一个引用型变量,System.out.println(XX)等价于System.out.println(XX.toString()).(A)
A .true
B .false
35、接口中 int STOP等价于public static final int STOP.(A)
A .true
B .false
36、public void someMethod(int i)和public int someMethod()是方法重载。(A)
A .true
B .false
37、如果有以下程序片段:
interface Some{
protected void dosome ();
}
class SomeImpl implements Some {
public void dosome(){
System.out.println("做一些事");
}
}
public class Main{
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是(A)
A .编译失败
B .显示“做一些事”
C .发生ClassCastException
D .执行时不显示任何信息
38、如果有以下程序片段
interface Some{
int x = 10;
}
public class Main{
public static void main (String [] args) {
System.out.println(Some.x);
}
}
以下描述正确的是(B)
A .编译失败
B .显示10
C .必须创建Some实例才能存取x
D .显示0
39、如果有以下程序片段
interface Some{
void dosome ();
}
class SomeImpl implements Some {
void dosome(){
System.out.println("做一些事");
}
}
public class Main {
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是(A)
A .编译失败
B .显示“做一些事”
C .发生ClassCastException
D .执行时不显示任何信息
40、如果有以下程序片段
interface Some{
void dosome ();
}
class SomeImpl implements Some {
public void dosome(){
System.out.println("做一些事");
}
}
public class Main {
public static void main (String [] args) {
Some s= new SomeImpl();
s.dosome ();
}
}
以下描述正确的是(B)
A .编译失败
B .显示“做一些事”
C .发生ClassCastException
D .执行时不显示任何信息
41、如果有以下程序片段
interface Some{
void dosome ();
}
abstract class AbstractSome implements Some {
public abstract void doSome();
public void doService() {
System.out.println("做一些服务");
}
}
public class FinallyDemo {
public static void main (String [] args) {
AbstractSome s = new AbstractSome();
s.doService();
}
}
以下描述正确的是(A)
A .编译失败
B .显示“做一些服务”
C .发生ClassCastException
D .执行时不显示任何信息
42、如果有以下程序片段
interface Some {
protected static final int x = 10;
}
public class Main {
public static void main(String [] args) {
System.out.println("Some.x");
}
}
以下描述正确的是:(A)
A .编译失败
B .显示10
C .必须创建Some实例才能存取x
D .显示0