java面向对象编程、类的封装、接口和基本类库练习题

更新时间:2024-05-26 15:32:01 阅读量: 综合文库 文档下载

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

面向对象编程基本知识练习

一、判断题

1.不需要定义类,就能创建对象。( )

2.构造方法用于给类的 private 实例变量赋值。( ) 3.对象一经声明就可以立即使用。( )

4.在定义变量和方法时,必须清楚地在其面前标上访问权限修饰符。( ) 5.Java 程序中的参数传递都是把参数值传递给方法定义中的参数。 ( ) 6.在类定义中,成员访问权限修饰符不能多次出现。( )

7.new 操作符动态地为对象按其指定的类型分配内存,并返回该类型的一个引用。8.类的方法通常设为 public,而类的实例变量一般也设为 public。( ) 9.构造方法在创建对象时被调用。( )

10.通过点运算符与类对象的引用相连,可以访问此类的成员。( ) 11.声明为 protected 的类成员只能被此类中的方法访问。( )

12.同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间。( ) 13.类的成员变量可以放在类体的任意位置。( )

14.声明为 protected 的类成员可以被此类作用域中的任何对象访问。( ) 15.没有返回值的方法可以用 void 来表示,也可以不加。( ) 二、选择题

1. 下面对对象概念描述错误的是:( ) A 操作是对象的动态属性 B 任何对象都必须有继承性 C 对象间的通讯靠消息传递 D 对象是属性和方法的封装体

2.编译并运行下面的程序,运行结果为:( ) public class A {

public static void main(String[] args) {

A a=new A(); a.method(8); }

void method(int i) {

System.out.println(“int: “+i); }

void method(long i) {

System.out.println(“long: “+i); } }

A 程序可以编译运行,输出结果为 int:8 B 程序可以编译运行,输出结果为 long:8

) ( C 程序有编译错误,因为两个 method()方法必须定义为静态(static)的 D 程序可以编译运行,但没有输出 3.下面关于类的说法不正确的是:( ) A 类是 Java 语言中的一种复合数据类型 B 类中不包含数据变量和方法

C 类是对所有具有一定共性的对象的抽象 D Java 语言的类只支持单继承 4.能作为类及其成员的修饰符是:( ) A interface B class C protected D public

5.设 x、y 均为已定义的类名,下列声明对象 x1 的语句不可能正确的是:( ) A public x xl=new y(); B public y xl=new x(); C x xl=new x(); D x xl=x();

6.面向对象程序设计技术的特点是:( ) A 可重用性 B 可维护性

C 表示方法的一致性

D 可重用性、可维护性、表示方法的一致性 7.下列方法定义中,方法头不正确的是:( ) A public static x(double a){…} B public static int x(double y){…} C void x(double d) D public int x(){…}

8.设已声明了一个类 A 的两个对象 al、 a2,为了初始化 a1 和 a2,下面语句正确的是:( )

A al=new(); a2=new(); B al=A new(); a2=A new(); C al,a2=new A();

D al=new A(); a2=new A(); 9.构造方法何时被调用?( ) A 类定义时

B 使用对象的变量时 C 调用对象方法时 D 创建对象时

10.下列哪个类声明是正确的?( ) A public abstract class Car{…} B abstract private move(){…} C protected private number; D abstract final class Hl{…}

11.下列不属于面向对象程序设计的基本特征的是:( )

A 抽象 B 封装 C 继承 D 静态

12.请看下面的程序段 class Person {

String name,department; int age;

public Person(String n) { name = n; }

public Person(String n,int a) { name = n; age = a; } public Person(String n,String d,int a) {

//doing the same as two arguments version of constructer //including assignment name=n,age=a } }

下面那一选项可以添加到“//doing the same??”处:( ) A Person(n,a)

B this(Person(n,a)) C this(n,a)

D this(name.age) 13.( )是一个特殊的方法,用于对类的实例变量进行初始化。 A 终止函数 B 构造函数 C 重载函数 D 初始化函数

14.关于变量和它们范围的说法,正确的是:( ) A 实例变量是类的成员变量

B 实例变量要用关键字 static 来声明

C 在一个方法执行时,定义在该方法的局部变量才被创建 D 局部变量必须在它们使用前初始化 15.请看下面的程序段 class Test{ private int m;

public static void fun(){ //some code… } }

方法 fun()如何来访问变量 m:( ) A 将 private int m 改成 protected int m B 将 private int m 改成 public int m C 将 private int m 改成 static int m D 将 private int m 改成 int m

16.在 Java 中,方法 main()将返回一个( )值。 A String

B int C char D void

17.有一个类 A,对于其构造函数的声明正确的是( ) A void A(int x){…} B public A(int x){…} C A A(int x){…} D int A(int x){…}

18.请看下面的程序段 public class Test {

long a[ ] = new long[10];

public static void main(String arg[ ]) { System .out .println(a[6]); } }

那一个选项是正确的:( ) A 不输出任何内容 B 输出 0

C 当编译时有错误出现 D 当运行时有错误出现

19.关键字( )表明一个对象或变量在初始化后不能修改。 A extends B final C this D finalizer

20.声明为 static 的方法不能访问( )类成员。 A 超类 B 子类 C 非 static

D 用户自定义类

类的封装练习

一、判断题

1.在子类中可以用完全相同的 signature 重新定义一个超类方法,这称为方法的覆盖 (override)。( )

2.final 修饰的方法是不能被子类覆盖的,只能被重载。( ) 3.声明为 final的类不能是超类。( )

4.当一个超类成员不适合该子类时,子类会以恰当的方式重新定义它。( )

5.对子类实例化对象需要调用超类的构造函数进行初始化工作, 完成对子类中的超类实例变量的初始化,则子类可以继承超类的构造函数。( )

6.在类的定义中如果不明确给出超类,那么默认超类就是 Object 类。( )

7.protected 类型的实例变量或方法只能由声明该变量或方法的类本身及其子类访问。( ) 8.Java 的每个子类的构造函数都要显式的调用它的直接超类的构造函数。( ) 9.超类对象的集合通常比它的任何一个子类对象集合大。( )

10.子类可以从多个超类中派生出来。( ) 二、选择题

1.为了区分重载多态中同名的不同方法,要求:( ) A 参数名不同 B 返回值类型不同

C 采用不同的形式参数列表 D 选项 A B C 都对

2.在某个类中定义一个方法:void GetSort(int x),以下关于能否作为这个方法的重载错 误的是:( )

A void GetSort(float x){x*=x;}

B int GetSort(double y){ return(int)(2*y); } C double GetSort(int x,int y){return x+y; } D 都不能

3.下列对继承的说法,哪个是正确的:( ) A 子类只能继承父类 public 方法和状态 B 子类能继承父类的非私有方法和状态 C 子类能继承父类的所有方法和状态

D 子类只能继承父类的方法,而不继承状态 4.定义类 A 如下: class A

{ int a,b,c;

public void B(int x,int y,int z){a=x; b=y; c=z; } }

下面对方法 B()的重载哪些是正确的:( )

A public void A(int xl,int yl,int z1){ a=x; b=y; c=z; } B public void B(int x1,int yl,int z1){ a=x; b=y; c=z;} C public void B(int x,int y){ a=x; b=y; c=0;} D public B(int x,int y,int z){a=x; b=y; c=z; } 5.下列程序的结果输出为:( ) class Strange{ int j; Strange(){ this(4); }

Strange(int j){ this.j=j; } }

class MainStrange{

public static void main(string[] args){ Strange funny=new Strange(); System.out.println(“j=“+funny.j); } }

A j=2 B j=4 C j=6 D j=7

6.下列说法正确的是:( )

A Java 中允许一个子类有多个父类

B 某个类是一个类的子类,它仍有可能成为另一个类的父类 C 一个父类只能有一个子类 D 继承关系最多不能超过 4 层 7.下列说法正确的是:( )

A 子类只能覆盖父类的方法,而不能重载 B 子类只能重载父类的方法,而不能覆盖

C 子类不能定义和父类同名同形参的方法,否则,系统将不知道使用哪个方法。 D 重载就是一个类中有多个同名但不同形参和方法体的方法 8.关于构造函数的说法正确的是:( ) A 一个类只能有一个构造函数

B 一个类可以有多个不同名的构造函数 C 构造函数与类同名

D 构造函数必须自己定义,不能使用父类的所有构造函数 9.下面是有关子类调用父类构造函数的描述正确的是:( ) A 子类定义了自己的构造函数,就不会调用父类的构造函数 B 子类必须通过 super 关键字调用父类有参数的构造函数 C 如果子类的构造没有通过 super 调用父类构造函数, 那么子类会先调用子类自己的构造函数,再调用父类不含参数的构造函数。

D 创建子类的对象时,先调用子类自己的构造函数,然后调用父类的构造函数 10.构造方法何时被调用? ( ) A 类定义时

B 使用对象的变量时 C 调用对象方法时 D 创建对象时 11.如果超类不允许其通过继承的方式产生的子类访问它的某些成员,那么它必须以什么方 式声明该成员。( ) A public B private C rotected D static

12.声明为 final 的变量不能在子类中覆盖,声明为( )和 ( )的方法是隐式的final。( )

A public private B private protected C protected static D static private

13.继承性使▁▁成为可能,它不仅节省开发时间,而且也鼓励人们使用已经验证无误和调 试过的高质量软件。( )

A 节省时间 B 软件复用 C 软件管理

D 延长软件生命周期

14.编译运行下面的程序,结果是( )。 Public class A {

public static void main(String[] args) {

B b=new B(); b.test(); }

void test() {

System.out.print(“A”); } }

class B extends A {

27 void test() {

super.test();

System.out.println(“B”); } }

A 产生编译错误

B 代码可以编译运行,并输出结果:AB C 代码可以编译运行,但没有输出

D 编译没有错误,但会产生运行时异常 15.已知类关系如下: class Employee;

class Manager extends Employeer; class Director extends Employee; 则以下语句正确的是: ( ) A Employee e=new Manager(); B Director d=new Manager(); C Director d=new Employee(); D Manager m=new Director();

16.一个▁▁类的对象可以当作相应的▁▁类对象看待。( ) A 子 系统 B 用户 系统 C 子 超 D 超 用户

17.哪个方法是对如下方法的重载?( )

public void example(){...}

A public void example( int m){...} B public int example(){...} C public void example2(){...}

D public int example ( int m, float f){...}

18、被声明为 private,protected 及 public 的类成员,在类外部: ( ) A 只能访问到声明为 public 的成员

B 只可能访问到声明为 protected 和 public 的成员 C 都可以访问 D 都不能访问

19、现有两个类 A、B,以下描述中表示 B 继承自 A 的是( ) A class A extends B B class B implements A 28 C class A implements D class B extends A

20、设类 B 是类 C 的父类,下列声明对象 x1 的语句中不正确的是( ) A C x1=new B(); B B x1=new C(); C C x1=new C(); D B xl=new B(); 三、简述题

1.方法的重载和覆盖有什么区别? 2.简述超类和子类的关系。

3.在方法体中可以使用 this 和 super 关键字,其意义是什么,在什么情况下使用? 4.试分清“是一个”关系和“有一个”关系。 5.调用构造方法遵循什么规则?

6.要使一个类的多个对象具有不同的初始状态,应如何实现?

接口和基本类库练习题

一、判断题

1.Java 中的类和接口都只支持单重继承。( ) 2. 由于 Java 中类只支持单重继承,所以一个类只能继承一个抽象类和实现一个接口。( ) 3.内部类始终可以访问外部类。( )

4.对于一个抽象类,改变它的属性和方法一定会改变它所有子类的属性和方法。( ) 5.一个类可以实现抽象类的所有方法,也可以只实现部分方法,但实现部分方法的类仍然是一个抽象类。( )

6.在实现接口的时候,要实现所有方法。( ) 7.接口其实是一个特殊的 abstract class。( ) 8.一个接口不可以继承其他接口。( ) 二、选择题

1.下面有关接口的说法,哪个是正确的?( ) A 接口与抽象类是相同的概念

B 一个类不可实现多个接口 C 接口之间不能有继承关系

D 实现一个接口必须实现接口的所有方法

2、在使用 interface 声明一个接口时,可以使用( )修饰符修饰该接口。 A private B protected

C private or protected D public

3.下列哪个不是属于接口用途的?( ) A 通过接口可以实现不相关类的相同行为 B 通过接口可以指明多个类需要实现的方法 C 通过接口可以了解对象的交互界面 D 通过接口可以了解对象所对应的类

5.虽然接口和抽象类不能创建对象,但它们的对象引用仍可指向该类型的对象。这种说法 ( ) A 正确 B 不正确 C 不能确定

D 接口和抽象类不能说明其对象引用

6.下面哪个类包括 drawImage( )方法、drawString( )方法和 setColor( )方法。 ( ) A java .awt .Applet B java .awt .Image C java .awt .Graphics D java .util .Date

7.接口中说明了一组公共的抽象方法,其中是否包含公共的静态方法?答案是( ) A 可以 B 不可以 C 不能肯定

D 因静态方法不能被改写,故不能出现在接口中

8.接口是 Java 面向对象的实现机制之一,以下说法正确的是: ( ) A Java 支持多重继承,一个类可以实现多个接口 B Java 只支持单重继承,一个类可以实现多个接口 C Java 只支持单重继承,一个类只可以实现一个接口 D Java 支持多重继承,但一个类只可以实现一个接口 9.关于接口的定义和实现,以下描述正确的是: ( ) A 接口定义中的方法都只有定义没有实现

B 接口定义中的变量都必须写明 final 和 static

C 如果一个接口由多个类来实现,则这些类在实现该接口中的方法时应采用统一的代码 D 如果一个类实现一个接口,则必须实现该接口中的所有方法,但方法未必声明为 public 11.声明接口的保留字是( ) A interface B protect C final D static

13.下面的接口(类)定义正确的是:( ) A

public class A {

private int x; public getx() { return x; } } B

public abstract class A 32 {

private int x;

public abstract int getx(); public int amethod() { return 0; } } C

public class A {

private int x;

public abstract int getx(); } D

public interface Interfacea {

private int x; public int getx() { return x; } }

14.接口具有下面的特性。( ) A 多重继承 B 不可继承 C 抽象性 D 嵌套

15.定义一个包的关键字是( )。 A import B package C interface D protected

16.下列选项中,用于在程序开头引入包的关键字是( )。 A import B implements C integer D protected

17.以下语句输出的结果是( )。 System.out.println(Math.floor(-0.8)); A 0 B -1

33 C -0.8 D 0.8

18.下面的程序段执行后,变量 a、b、c 的值分别是( )。 int a,b,c;

a=(int)Math.round(-4.51); b=(int)Math.ceil(-4.51); c=(int)Math.floor(-4.1); A -5, -4, -5 B -4,-4,-5 C -5,-5,-5 D -4,-4,-4

19.下面( )说法不正确。

A 如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字 B 如果源文件包含 import 语句,则该语句必须是除空行和注释行外的第一个语句行 C 如果某源文件包含 package 语句,则该语句必须是第一个非空、非注释行 D 接口中的方法不一定是抽象方法,所以可以不用关键字 abstract 修饰

17.以下语句输出的结果是( )。 System.out.println(Math.floor(-0.8)); A 0 B -1

33 C -0.8 D 0.8

18.下面的程序段执行后,变量 a、b、c 的值分别是( )。 int a,b,c;

a=(int)Math.round(-4.51); b=(int)Math.ceil(-4.51); c=(int)Math.floor(-4.1); A -5, -4, -5 B -4,-4,-5 C -5,-5,-5 D -4,-4,-4

19.下面( )说法不正确。

A 如果某公共的接口被声明在一个源文件中,则接口必须与源文件具有相同的名字 B 如果源文件包含 import 语句,则该语句必须是除空行和注释行外的第一个语句行 C 如果某源文件包含 package 语句,则该语句必须是第一个非空、非注释行 D 接口中的方法不一定是抽象方法,所以可以不用关键字 abstract 修饰

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

Top