抽象类和接口习题

更新时间:2023-11-24 00:29:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、易错概念题

1.以下方法错误的是(A D)

A 覆盖方法包括成员方法的覆盖和成员变量的覆盖 B 成员方法的覆盖是多态的一种表现形式 C 子类可以调用父类中被覆盖的方法 D 任何方法都可以被覆盖 分析:在子类中调用父类方法使用super关键字。super.a() 就可以调用父类的a方法。

在类继承或者接口实现过程中就会涉及到成员属性以及成员函数的重写,需要注意的是,成员函数的重写是直接覆盖父类的(继承中),但是成员变量重写是不会进行覆盖的。

如果子类本身没有定义使用this关键字可以去访问父类的成员变量。

最后final修饰的方法不能被覆盖 覆盖即重写和重载一起都是多态的表现形式。

(重载、重写和覆盖)

override->重写(=覆盖)、overload->重载、polymorphism -> 多态

override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则:

1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.

2、重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。

3、重写的方法的返回值类型必须和被重写的方法的返回一致; 4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; 5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。

6、静态方法不能被重写为非静态的方法(会编译出错)。

overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 重载的规则:

1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);

2、不能通过访问权限、返回类型、抛出的异常进行重载; 3、方法的异常类型和数目不会对重载造成影响;

对比:如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。

2.下面说法正确的是(C H)

A instanceof 关键字用来判定某个类是否为抽象类。 B final关键字修饰的成员变量不需要初始化。

C 接口的方法都是抽象方法(jdk1.8之前),并且没有方法体

D 当我们继承一个抽象类时,我们必须要实现抽象类的抽象方法。 (X)

E 在向上转型的过程中,如果父类和子类拥有相同的名字的成员方法(非静态)访问的是子类的该方法。如果父类和子类拥有名字的成员变量时,访问的是子类的成员变量。(X)

F 内部类访问外部类方法时,不用创建外部类对象直接访问外部类方法。 G 内部类变量不能设置为static(可以),也不能设置为final H 多态通常用来作为参数传入或者作为返回值返回。

3.下面说法不正确得是(A C D E)

A 不能和abstract一起使用的修饰符有static final public final B 抽象类之间是继承关系,接口之间也是。 C 接口不能存在普通方法和常量

D局部内部类public,private修饰符修饰 default/static E接口不可以直接实例化,抽象类可以

4.下面有那些选项是对的(B C E)

A instanceof是一个二元修饰符,作用是用来判断左边的对象是否是右边类的实例,返回的是布尔类型

B private protected 和static都不可以修饰interface接口(接口的修饰符只有public)

C this.属性名访问的是本类中的属性,如果本类中没有,就从父类中继续查找 D对象是对类的抽象化 E 接口中可以有常量

分析 接口可以有常量(jdk1.8以后) instanceof 是一个二元修饰符,作用是用来判断左边的对象是否是右边类的实例 或者是右边超类的实例 5.以下说法正确的是 ( B ) 对于方法内得形参() A 必须定义多个形参 B 可以没有 C 至少有一个 D 只能是简单变量

6.以下说法正确的是( C )

A 对于局部内部类,不能在class前加任何修饰符(public default private protected)来修饰 (static好像可以)

B 只要没有定义不带参数的构造函数,JVM都会为类生成一个默认的构造函数 C 向上转型中,父类与子类拥有相同名字的普通方法时,访问的是子类的成员方法

D单例模式中类的构造方法使用private修饰,声明为私有,这样就不能在类的外部使用new关键字来创建实例对象了

7.final修饰的方法不可重写的(子类不能重写父类final方法,但是可以调用) 8.以下说法正确的是(E G)

A 抽象方法是一种功能契约(功能契约即为接口),不实现抽象方法就无法构造对象

B 接口中的抽象方法只能是public的,而抽象类中的抽象方法可以用别的修饰符修饰(还可以是protected)

C 类是对象的抽象模型,刻画了对象中所有信息

D 抽象方法不能用final来修饰 ,可以用satic来修饰

E 对计算公式已不需要更改的数学函数,常用public static final 来修饰; F 若类中有final abstract来修饰的方法,必须实现该方法才能构造对象。 G 引用是对象的名字,引用值是对象的起始地址

9.下列的说法错误的是(B) A 抽象类必须被子类继承

B 对象向上转型以后,拥有相同名字的普通成员变量(静态变量)时,访问的是子类里面的

C super的主要功能是完成子类的调用父类的内容,并且只能放在子类构造方法的第一行

D 接口的方法必须定义为public权限,并且只能是抽象方法(不考虑jdk1.8) 10.下面那些选项是错误的(A B D E)

A instanceof 是一个二元操作符,只用来判断左边的对象是否是右边的类的实例,返回是布尔型 (还可以判断是否是右边父类的实例)

B 成员内部类可以使用任何修饰符修饰,可以定义常量和静态变量

C this.属性名访问的是本类中的属性,如果本类中没有,就从父类中继续查找 D 在成员方法里面叫做局部内部类,可以访问外部类属性和使用任何修饰符,但使用局部内部类方法时 ,必须实例化内部类对象 E 实现内部类的调用,要直接实例化内部类

11 下列定义,正确的有哪些( A B C D)

A接口只能做方法声明,抽象类中就可以做方法实现和方法声明

B 抽象类中的抽象方法只能声明,不能实现.abstract void abc();不能加{} C 抽象方法要被实现,所以不能是静态的,也不能是私有的

D 接口里只能有公共方法,1.8以后 可以有普通方法和成员变量

E 类实现接口,利用关键字implement 完成 (错误 注意为implements) 12以下说法不正确的有( B C D) A拥有抽象方法的类为抽象类

B抽象类的方法时抽象方法 C继承抽象类的子类为抽象类 D实现接口的类为抽象类

13 下列说法正确的是 ( A )

A Java程序中的main方法必须写在类里面 B Java程序中可以有多个main方法 C Java程序中类名必须和文件名一样

DJava程序的main方法中如果只有一条语句,可以不用大括号括起来

E在类中声明一个整数数组作为成员变量,如果没有给他赋值,数值元素值为空 F数组本身是一个对象

14 如果在子类继承父类,子类构造方法中没有注明时默认第一行调用父类的无参构造方法

15 下列说法正确的是(A B C) A try块不可以省略

B 可以使用多重catch块 C finally块可以省略

D catch块和finally块可以同时省略

16 以下对自定义异常描述正确得是(A C) A 自定义异常必须继承Exception B 自定义异常必须继承Error

C 自定义异常可以更加明确地确定异常出错位置和详细信息 D程序中已经提供了丰富的异常类,使用自定义异常没有意义 17在JAVA中关于抽象类的描述正确的说(BD) A 抽象类可以被实例化

B 如果一个类中有一个方法被声明为抽象的这个类必须是抽象类 C 抽象类的方法必须是抽象的

D 声明抽象类必须带有abstract关键字

本文来源:https://www.bwwdw.com/article/749t.html

Top