Java习题集第四章Java面向对象程序设计 您所在的位置:网站首页 java面向对象编程课后题答案 Java习题集第四章Java面向对象程序设计

Java习题集第四章Java面向对象程序设计

2023-12-22 17:08| 来源: 网络整理| 查看: 265

目录

第 4 章 Java面向对象程序设计

一.单项选择题

二. 填空题

三.简答题

四.程序阅读题

五. 程序设计题

一.单项选择题

1.以下关于继承的叙述正确的是(       )。

A. 在Java中类只允许单一继承

B. 在Java中一个类只能实现一个接口

C. 在Java中一个类不能同时继承一个类和实现一个接口

D. 在Java中接口只允许单一继承

2. 下列不属于面向对象编程的三个特征的是

A.  封装    B.指针操作    C.多态性     D.继承

3.  类所实现的接口以及修饰不可以是

A. public       B.  abstract      C.  final     D. void

4.  下列类的定义,错误的是

A. public class test extends Object{

……

   }

B.  final class operators{

……

}

C. class Point{

……

}

D. void class Point{

……

  }

5. 关键字supper的作用是

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

B.用来调用父类中被重载的方法

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

D.以上都是

6. 下面程序定义了一个类,关于该类说法正确的是

abstract class abstractClass{

……

}

A.该类能调用new abstractClass(),方法实例化为一个对象

B.该类不能被继承

C.该类的方法都不能被重载

D.以上说法都不对

7. 关于对象的删除,下列说法正确的是

A.必须由程序员完成对象的清除

B. java把没有引用的对象作为垃圾收集起来并释放

C.只有当程序中调用System.gc()方法时才能进行垃圾收集

D. java中的对象都很小,一般不进行删除操作。

8.下列说法正确的是

A. java中包的主要作用是实现跨平台功能

B. package语句只能放在import语句后面

C.包(package)由一组类(class)和界面(interface)组成

D.可以用#include关键词来标明来自其它包中的类;

9. 关于构造方法,下列说法错误的是

A.构造方法不可以进行方法重写

B.构造方法用来初始化该类的一个新的对象

C.构造方法具有和类名相同的名称

D.构造方法不返回任何数据类型

10.若需要定义一个类域或类方法,应使用哪种修饰符?(     )

A. static B. package C. private       D. public

11.在使用interface声明一个接口时,只可以使用(    )修饰符修饰该接口。

A. private B. protected C. private  protected D. public

12. 编译并运行以下程序,以下描述哪个选项是正确的(          )

1. class  X{

2. protectied  String  toString( )i{

3. return  super.toString();}

4. }

A. 编译通过运行无异常 B. 编译通过但运行时出错

C. 行2出错,不能成功编译 D. 不能成功编译,行3出错

13.下列修饰符中与访问控制无关的是 (  )

A.private     B.public     C.protected        D.final

14.关于对象成员占用内存的说法哪个正确?  (  )

A.同一个类的对象共用同一段内存

B. 同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间

C.对象的方法不占用内存

D.以上都不对

15.下列说法哪个正确?

A.不需要定义类,就能创建对象

B.对象中必须有属性和方法

C.属性可以是简单变量,也可以是一个对象

D. 属性必须是简单变量

16.构造函数何时被调用?  (  )

A. 创建对象时                     B. 类定义时

C. 使用对象的方法时      D. 使用对象的属性时

17. 抽象方法:  (  )

A. 可以有方法体           B. 可以出现在非抽象类中

C. 是没有方法体的方法     D. 抽象类中的方法都是抽象方法 

18.关于继承的说法正确的是:  (  )

A. 子类将继承父类所有的属性和方法。

B. 子类将继承父类的非私有属性和方法。

C. 子类只继承父类public方法和属性

D. 子类只继承父类的方法,而不继承属性

19.关于构造函数的说法哪个正确?  (  )

A. 一个类只能有一个构造函数

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

C. 构造函数与类同名

D. 构造函数必须自己定义,不能使用父类的构造函数

20.this和super:

A. 都可以用在main()方法中

B. 都是指一个内存地址

C. 不能用在main()方法中

D. 意义相同

21.覆盖与重载的关系是  (  )

A. 覆盖只有发生在父类与子类之间,而重载可以发生在同一个类中

B.覆盖方法可以不同名,而重载方法必须同名

C.final修饰的方法可以被覆盖,但不能被重载

D.覆盖与重载是同一回事

22.关于接口哪个正确?  (  )

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

B.一个类只能实现一个接口

C.接口间不能有继承关系

D.接口和抽象类是同一回事

23. 下列有关 Java 中接口的说法哪个是正确的? 

A.  接口中含有具体方法的实现代码

B.  若一个类要实现一个接口,则用到 “implements” 关键字 

C.  若一个类要实现一个接口,则用到“ extends ”关键字

D.  接口不允许继承

24. 定义一个接口必须使用的关键字是(      )

A. public B. class C. interface D. static

25. 不允许作为类及类成员的访问控制符的是(      )。

    A. public                    B. private

    C. static                     D. protected

26. 为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为(      )。

    A. static void method( )                    B. public void method( )    

    C. final void method( )                     D. abstract void method( )

27.下列哪个类声明是正确的?(       )。

A. abstract final class HI{···}   B. abstract private move(){···} C. protected private number;    D. public abstract class Car{···}

28.不允许作为类及类成员的访问控制符的是(      )。    A. public     B.  private    C. static      D.  protected

29. 在Java中,所有类的根类是(       )。

A.java.lang.Object B.java.lang.Class C.java.applet.Applet D.java.awt.Frame 30.在类的定义中可以有两个同名函数,这种现象称为函数(   )。

A.封装            B.继承             

C.覆盖            D.重载

31.在类的定义中构造函数的作用是(   )。 A.保护成员变量    B.读取类的成员变量

C.描述类的特征    D.初始化成员变量

32.类与对象的关系是(   )。 A.类是对象的抽象  B.对象是类的抽象   

C.对象是类的子类   D.类是对象的具体实例  

33. 如果一个类的成员变量只能在所在类中使用,则该成员变量必须使用的修饰是

A. public                 B. protected            

C. private                D. static

34.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数. 类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为(  )

A. 隐藏      B. 重写      C. 重载   D. Java不支持此特性

35. 以下有关构造方法的说法,正确的是:(   )

A. 一个类的构造方法可以有多个

B. 构造方法在类定义时被调用

C. 构造方法只能由对象中的其它方法调用。

D. 构造方法可以和类同名,也可以和类名不同

36.下列类定义中哪些是合法的抽象类的定义?(   )

A. abstract Animal{abstract void growl();}    

B. class abstract Animal{abstract void growl();}         

C. abstract class Animal{abstract void growl();}       

D. abstract class Animal{abstract void growl(){System.out.println(“growl”);};}

二. 填空题

1.把对象实例化可以生成多个对象,使用_________运算符为对象分配内存空间。

2. java程序引入接口的概念,是为了弥补只允许类的________的缺憾。

3. java语言以_______为程序的基本单位,它是具有某些共同特性实体的集合,是一种抽象的概念。

4.抽象方法只能存在于抽象类中。抽象方法用关键字________来修饰。

5. java语言中_______是所有类的根。

6.在java中有一种叫做______特殊方法,在程序中用它来对类成员进行初始化。

7. new是______对象的操作符。

8.继承主要强调子类在父类的基础上取”长”补”短”,而______主要强调的是类与类之间的传输。

9.我们在java程序中,把关键字________加到方法名称的前面,来实现子类调用父类的方法。

10.定义一个类包括定义类头和定义______两个部分。

11.在java程序里,同一类中重载的多个方法具有相同的方法名和_____的参数列表.重载的方法可以有不同的返回值类型。

12. java是面向对象语言,对象是客观事物的_______,对象与之是一一对应的,它是很具体的概念。

13. java语言通过接口支持______继承,使类继承具有更灵活的扩展性。

14.一个对象的生命周期包含三个阶段:生成, ______ 和清除。

15. java语言中,调用方法时,参数传递是______调用,而不是地址调用。

16.接口是一种只含有抽象方法或______的一种特殊抽象类。

17.创建一个类就是创建一个新的数据类型,而类在java中属于_____数据类型。

18.  abstract方法________(不能或能)与final并列修饰同一个类。

19.  如果一个类中定义了几个名为method的方法,这些方法的参数都是整数,则这些方法的________必须是不同的,这种现象称为方法的重载。

20. 构造方法是一种特殊的成员方法,构造方法名与       相同。

21. Java语言只允许单继承,指每个类只能有一个       。

22.         方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。      方法是不能被当前类的子类重新定义的方法。

23. 在Java程序中,通过类的定义只能实现     重继承,但通过接口的定义可以实现     重继承关系。

子类必须通过       关键字调用父类有参数的构造函数。在Java程序中,通过类的定义只能实现单重继承,但通过         的定义可以实现多重继承关系。如果在Java程序中,需要使用java.util包中的所有类,则应该在程序开始处加上语句          。下列程序的运行结果是_______。

import  java.io.*;

public   class  ATest{

   public  static  void  main(String args[])

{

   SubClass  sb = new  SubClass( );        

   System.out.println(sb.fun( ));

 }

}

class  SuperClass{

  int  a =24 , b =5 ;  

}

class  SubClass  extends  SuperClass

{

  int  fun( )

{

 return   a%b;  

}

}

28. _______方法是一种仅有方法头,没有具体方法体和操作实现的方法,该方法必须在抽象类之中定义。

三.简答题

1. 什么是继承?

2. 请简述重载和重写的区别?

3. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 4. abstract class和interface有什么区别? 5. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 6. 数组有没有length()这个方法? String有没有length()这个方法? 7. 构造器Constructor是否可被override? 8. 简述Java多态性的概念,隐藏. 覆盖和重载的概念及使用时应注意的问题。

9. 简述Java中构造方法的概念及特点。

10. 简述Java中接口的概念及接口的性质?

11. 作用域public,private,protected,以及不写时的区别

12. 是否可以从一个static方法内部发出对非static方法的调用?

四.程序阅读题

1.阅读以下程序,写出输出结果。

class  Animal {

  Animal() {

    System.out.print ("Animal  ");  }

}

public  

class  Dog  extends  Animal {

 Dog() {

    System.out.print ("Dog ");  }

 

 

  public static void main(String[] args) {

    Dog  snoppy= new  Dog();  }

}

2.  读程序,写出正确的运行结果。 

public class Father{

int a=100;

public void miner(){

 a--;

}

public static void main(String[] args){

Father x = new Father();

Son y = new Son();

System.out.println(y.A.;

System.out.println( y.getA());

y.miner();

System.out.println(y.A.;

System.out.println(y.getA());

}

}

class Son extends Father{

int a = 0;

public void plus(){

   a++;

}

public int getA() {

return super.a;

}

}

3. 以下程序的输出结果为            。

public class Person {

String name;

int age;

 

public Person(String name, int age) {

this.name = name;

this.age = age;

}

 

public static void main(String[] args) {

Person c = new Person("Peter", 17);

System.out.println(c.name + " is " + c.age + " years old!");

}

}

 

4. 以下程序的输出结果为              。

public class Course {

private String cNumber;

private String cName;

private int cUnit;

 

public Course(String number, String name, int unit) {

cNumber = number;

cName = name;

cUnit = unit;

}

 

public void printCourseInfo() {

System.out.println("课程号:" + cNumber + " 课程名:" + cName + " 学分:" + cUnit);

}

}

 

class CourseTest {

public static void main(String[] args) {

Course c;

c = new Course("101", "ASP", 3);

c.printCourseInfo();

}

}

 

5. 以下程序的输出结果为               。

public class Tom {

private float weight;

private static String name;

 

public void setWeight(float weight) {

this.weight = weight;

}

 

private void out() {

System.out.println(name + "体重:" + weight + "斤");

}

 

public static void main(String[] args) {

Tom.name = "汤姆猫";

Tom cat = new Tom();

cat.setWeight(20);

cat.out();

}

}

 

6. 以下程序的输出结果                       。

public class Father {

String name, address, tel;

int age;

 

public Father(String name, int age) {

this.name = name;

this.age = age;

}

 

void out() {

System.out.print("姓名:" + name);

System.out.print(" 年龄:" + age);

}

 

void outOther() {

System.out.print(" 家庭住址:" + address);

System.out.print(" 电话:" + tel);

}

}

 

class Son extends Father {

String school;

 

public Son(String name, int age) {

super(name, age);

}

 

void out() {

super.out();

super.outOther();

System.out.println(" 学校:" + school);

}

 

public static void main(String args[]) {

Son son = new Son("Tom", 15);

son.address = "金水区";

son.school = "九中";

son.tel = "66123456";

son.out();

}

}

7. 下列程序的运行结果是                    。

public class MyClass {

int a[] = { 1, 2, 3, 4, 5 };

 

void out() {

for (int j = 0; j < a.length; j++)

System.out.print(a[j] + "");

}

 

public static void main(String[] args) {

MyClass my = new MyClass();

my.out();

}

}

8. import java.io.* ;

   public class abc

   {

         public static void main(String args[ ])

         {

System.out.println("a="+a+"\nb="+b);  

}

    }

    class SubClass extends SuperClass

    {  int c;

       SubClass(int aa, int bb, int cc)

       {   

super(aa, bb);

           c=cc;

       }

    }

   class SubSubClass extends SubClass

   {   int a;

       SubSubClass(int aa, int bb, int cc)

       {   super(aa, bb, cc);

           A = aa+bb+cc;

        }

       void show()

       {  

System.out.println("a="+a+"\nb="+b+"\nc="+c);  

}

  }

9. 输出结果为:

public class Sum{

public static void main(String [] args){

int j=10;

System.out.println("j is : "+j);

calculate(j);

System.out.println("At last, j is : "+j);

}

static void calculate (int j){

for (int i = 0;i

void display() {    //实现抽象类的方法

System.out.println("Rectangle");

}

}

class Triangle extends Shape {

void display() {   //实现抽象类的方法

System.out.println("Triangle");

}

}

public class AbstractClassDemo{

public static void main(String args[]){

(new Circle()).display(); //定义无名对象来调用对应的display方法

(new Rectangle()).display();

(new Triangle()).display();

}

}

五. 程序设计题

1. 按以下要求编写程序

(1) 创建一个Rectangle类,添加width和height两个成员变量

(2) 在Rectangle中添加两种方法分别计算矩形的周长和面积

(3) 编程利用Rectangle输出一个矩形的周长和面积

2. 按以下要求编写程序

(1) 编写Animal接口,接口中声明run() 方法

(2) 定义Bird类和Fish类实现Animal接口

(3) 编写Bird类和Fish类的测试程序,并调用其中的run()方法



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有