继承和多态选择题分享

这是一组关于Java中继承和多态的选择题,涵盖了final和abstract的使用、instanceof关键字的应用、子类与父类之间的关系、访问权限控制、抽象类和方法等内容。通过这些题目,可以加深对Java继承和多态的理解。

1、下列哪个叙述是正确的?(A)
A.不可以同时用final和abstract修饰同一个方法。

B.abstract类中只可以有abstract方法。

C.final 类可以有子类。

D.abstract类中可以有非abstract方法,但该方法不可以用final修饰。
2、假设C是B的子类,B是A的子类,cat是C类的一个对象,bird是B类的一个对象,下列哪个叙述是错误的?(D)
A.cat instanceof A的值是true。

B.cat instanceof B的值是true。

C.bird instanceof A的值是true。

D.bird instanceof C的值是true。

3、给定下列程序,正确的输出是?(D)

class Base{

Base(int i){test();}

void test(){  System.out.println("Base.test()"); }

}

public class Child extends Base{

Child (int i){   super(i);

                  test();}

Child (float f){  this((int)f); }

void test(){  System.out.println("Child.test()");  }

    public static void main(String arg[])  {  new Child(10.8f).test();  }

}

A

Child.test()

B

编译失败

C

Child.test()

Child.test()

D

Child.test()

Child.test()

Child.test()

4、B是父类,C是子类。父类引用指向子类对象B b = new C()时,下列说法那个是错误的(D)

A.若子类未覆盖某属性,则父类引用调用父类本身的旧属性

B.若子类未覆盖某方法,则父类引用调用父类本身的旧方法

C.若子类定义了父类同名的某方法,则父类引用调用子类重新定义的新方法

D.若子类定义了父类同名的属性,父类引用调用子类的属性

*[HTML]:

父类引用指向子类对象时

  1. 若子类覆盖了某方法,则父类引用调用子类重新定义的新方法
  2. 若子类未覆盖某方法,则父类引用调用父类本身的旧方法
  3. 若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性
  4. 若子类未覆盖某属性,则父类引用调用父类本身的旧属性
  5. 父类引用不能访问子类新定义的方法

子类引用指向自身对象时

  1. 若子类覆盖了某方法,则子类引用调用子类重新定义的新方法
  2. 若子类未覆盖某方法,则子类引用调用父类本身的旧方法
  3. 若子类覆盖了某属性,则子类引用调用子类重新定义的新属性
  4. 若子类未覆盖某属性,则子类引用调用父类本身的旧属性
  5. 子类引用可以访问子类新定义的方法

5、如果子类和父类不在同一个包中,那么,子类继承了父类的()成员变量做为子类的成员变量,继承了父类的()方法为子类的方法(D)

A.private protected, private protected

B.private、public, protected、public

C.protected、public, private public

D.protected、public, protected、public

6、运行下面程序的结果是什么?©

abstract class MineBase {

abstract void amethod();

static int i;

}

public class Mine extends MineBase {

public static void main(String[] a) {

int[] ar = new int[5];

for (int i=0; i<ar.length; i++)

{ System.out.println(ar[i]); }

}

}

A.打印5个0

B.编译错误,数组ar[]必须初始化

C.编译错误,Mine应声明为抽象类

D.出现IndexOutOfBoundsException异常

7、指出下列程序中的错误(A)

final class First

{ private int a = 1;

 int b = 2;

}

class Second extends First

{ protected int a = 2;

public void method() 

{ System.out.println(a + b); }

}

A. Second类不能继承First类

B. 子类中重复定义变量a

C.println方法中参数类型错误,该方法只能接受字符串类型数据

D. 关键字final不能修饰First类

8、下列哪个叙述是正确的?(D)

A.abstract类的子类必须是非abstract类。

B. 子类继承父类的构造方法。

C.子类重写或新增的方法也能直接操作被子类隐藏的成员变量。

D.子类继承的方法只能操作子类继承和隐藏的成员变量。

9、关键字supper的作用是(D)

A.用来调用父类的构造函数

B.以上都是

C.用来调用父类中的方法

D.用来访问父类被隐藏的成员变量

10、子类的继承性相关的说法正确的是(ACD)

A.如果父类中的成员使用public修饰,子类无条件继承。

B.如果父类中的成员使用private修饰,子类也能继承到。

C.如果父类和子类在同一个包中,此时子类可以继承父类中缺省修饰符的成员。

D.父类的构造器,子类不能继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值