加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第4章   Java语言面向对象高级程序设计

(2010-11-15 13:03:27)
标签:

杂谈

    

一、填空题

1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。

2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。

3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。

4public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的 子类与非子类)的代码访问引用。

5protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。

6default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。

7private类型的类成员只能被其所在类中的代码访问引用,它只具有()域访问性。

8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。

9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。

10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。

11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。

12Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。

13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。

14Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object)。

15Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。

16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。

17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。

18this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。

19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。

20Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。

21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。

22.一个接口可以通过关键字extends来继承(多个)其他接口。

23.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。

24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。

25.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法);)。

26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。

27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。

二、简答题

1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?

2.如何创建一个类的子类?

3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?

4什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?

5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?

6.什么是成员变量的继承?什么是成员变量的覆盖?

7.举例说明什么是上转型对象,上转型对象的操作原则是什么?

8.简述接口定义的一般格式。

9.什么是接口?如何定义接口?接口与类有何区别?

10.一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象方法?

11.比较接口与抽象类的异同。

12.什么是抽象类?什么是抽象方法?各自有什么特点?

13.什么是最终类?什么是最终变量?什么是最终方法?

14.简述内部类的类型。

15.简述在外部类的内部与外部对实例成员类实例化的方法。

16.简述定义语句匿名类和参数匿名的一般格式。

17.什么是适配器模式?什么是装饰模式?

三、选择题

1.下面关于类的继承性的描述中,错误的是( C )。

A.继承是在已有的基础上生成新类的一种方法

BJava语言要求一个子类只有一个父类

C.父类中成员的访问权限在子类中将被改变

D.子类继承父类的所有成员,但不包括私有的成员方法

2.在成员方法的访问控制修饰符中,规定访问权限包含该类自身,同包的其他类和其他包的该类子类的修饰符是( B )。

A.默认         Bprotected      Cprivate          Dpublic

3.在类的修饰符中,规定只能被同一包类所使用的修饰符是( B )。

Apublic        B.默认          Cfinal           Dabstract

4.下列关于子类继承父类的成员描述中,错误的是( C )。

A.当子类中出现成员方法头与父类方法头相同的方法时,子类成员方法覆盖父类中的成员方法。

B.方法重载是编译时处理的,而方法覆盖是在运行时处理的。

C.子类中继承父类中的所有成员都可以访问。

D.子类中定义有与父类同名变量时,在子类继承父类的操作中,使用继承父类的变量;子类执行自己的操作中,使用自己定义的变量。

5.定义一个类名为“MyClass.java”的类,并且该类可被一个工程中的所有类访问,则下面哪些声明是正确的?( AB 

Apublic class MyClass extends Object     Bpublic class MyClass 

Cprivate class MyClass extends Object    Dclass MyClass extends Object

6.下列关于继承性的描述中,错误的是( C )。

A.一个类可以同时生成多个子类 B.子类继承了父类中除私有的成员以外的其他成员

CJava支持单重继承和多重继承 DJava通过接口可使子类使用多个父类的成员

7.下列关于抽象类的描述中,错误的是( C )。

A.抽象类是用修饰符abstract说明的    B.抽象类是不可以定义对象的

C.抽象类是不可以有构造方法的     D.抽象类通常要有它的子类

8.设有如下类的定义:

public class parent 

int change() {} 

class Child extends Parent 

则,下面哪些方法可加入Child类中?( AB 

Apublic int change(){          Bint chang(int i){ 

Cprivate int change(){             Dabstract int chang(){ }

9.下列关于构造方法的叙述中,错误的是( D )。

A.构造方法名与类名必须相同     B.构造方法没有返回值,且不用void声明

C.构造方法只能通过new自动调用  D.构造方法不可以重载,但可以继承

10.下面叙述中,错误的是( C )。

A.子类继承父类  B.子类能替代父类  C.父类包含子类   D.父类不能替代子类

11.下列对多态性的描述中,错误的是( B )。

AJava语言允许方法重载与方法覆盖     BJava语言允许运算符重载

CJava语言允许变量覆盖               D.多态性提高了程序的抽象性和简洁性

12.下面关于接口的描述中,错误的是( A )。

A.一个类只允许继承一个接口    B.定义接口使用的关键字是interface

C.在继承接口的类中通常要给出接口中定义的抽象方法的具体实现

D.接口实际上是由常量和抽象方法构成的特殊类

13.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?( C 

AArrayList myList=new Object();     BArrayList myList=new List();

CList myList=new ArrayList();        DList myList=new List();

14.下列哪些方法与方法public void add(int a){}为合理的重载方法?( ACD 

Apublic void add(char a)           Bpublic int add(int a)

Cpublic void add(int a,int b)         Dpublic void add(float a)

15MAX_LENGTHintpublic成员变量,变量值保持为常量100,其定义是( C )。

Apublic int MAX_LENGTH=100;         Bfinal public int MAX_LENGTH=100;

Cpublic final int MAX_LENGTH=100;     Dfinal int MAX_LENGTH=100;

四、判断题

1Java语言中,构造方法是不可以继承的。(  

2.子类的成员变量和成员方法的数目一定大于等于父类的成员变量和成员方法的数目。( × 

3.抽象方法是一种只有说明而无具体实现的方法。(  

4Java语言中,所创建的子类都应有一个父类。(  

5.调用this super构造方法的语句必须放在第一条语句。(  

6.一个类可以实现多个接口,接口可以实现“多重继承”。   

7.实现接口的类不能是抽象类。(  

8.使用构造方法只能给实例成员变量赋初值。(  

9Java 语言不允许同时继承一个类并实现一个接口。( × 

五、分析题

1分析下面的程序,写出运行结果。

public class Exercises6_1 extends TT{

    public void main(String args[]){

    Exercises6_1 new Exercises6_1("Tom");

   }

   public Exercises6_1(String s){

    super(s);

    System.out.println("How do you do?");

   }

   public Exercises6_1(){

    this("I am Tom");

   }

  }

  class TT{

    public TT(){

     System.out.println("What pleasure!");

    }

    public TT(String s){

     this();

     System.out.println("I am "+s);

    }

  }

运行结果是:(                 

What pleasure 

am Tom 

How do you do

 

2分析下面的程序,写出运行结果。

public class Exercises6_2 {

private static int count;

private String name;

public class Student {

private int count;

private String name;

public void Output(int count) {

count++;

this.count++;

Exercises6_2.count++;

Exercises6_2.this.count++;

System.out.println(count this.count "

Exercises6_2.count Exercises6_2.this.count++);

}

}

public Student aStu() {

return new Student();

}

public static void main(String args[]) {

Exercises6_2 g3 new Exercises6_2();

g3.count 10;

Exercises6_2.Student s1 g3.aStu();

s1.Output(5);

}

}

运行结果是:(               

12 12

 

3分析下面的程序,写出运行结果。

class Exercises6_3 {

class Dog {

private String name;

private int age;

public int step;

Dog(String s, int a) {

name s;

age a;

step 0;

}

public void run(Dog fast) {

fast.step++;

}

}

public static void main(String args[]) {

Exercises6_3 new Exercises6_3();

Dog a.new Dog("Tom", 3);

d.step 29;

d.run(d);

System.out.println(" d.step);

}

}

运行结果是:(            

30

 

4分析下面的程序,写出运行结果。

class Aclass   void go() System.out.println("Aclass");   }

public class Bclass extends Aclass {

void go() System.out.println("Bclass"); }

public static void main(String args[]) {

  Aclass new Aclass();

  Aclass a1 new Bclass();

  a.go();

  a1.go();

 }

运行结果是:(           

Aclass

Bclass

 

六、改错题

1.找出下面代码的错误部分,说明错误类型及原因,并更正之。

public class Car 

  private String carName;

  public int mileage;

  private static final int TOP_SPEED 200;

  abstract void alert();

  public static int getTopSpeed() {

    return TOP_SPEED;

  }

  public static void setCarName() {

    carName "奥迪";

  }

  public static void setMileage() {

    mileage 180;

  }

}

错误:因为含有抽象方法的类,必须是抽象类;静态方法只能访问静态成员。

更正:

public abstract class Car {

private String carName;

public int mileage;

private static final int TOP_SPEED 200;

abstract void alert();

public static int getTopSpeed() {

return TOP_SPEED;

}

public void setCarName() {

carName "奥迪";

}

public void setMileage() {

mileage 180;

}

}

 

 

2下列代码不能编译的原因是:(     )。

class {

private int x;

public static void main(String args[])  new B(); }

class  B() {System.out.println(x);  }

}

}

因为在A类的main方法中,还没有A的实例就要试图生成内部类的实例。

更正如下:

public class {

private int x;

public static void main(String args[]) {

new A();

a.new B();

}

class {

B() {

System.out.println(x);

}

}

}

 

七、编程题

1.先在一个包中编写第一个类ClassA,要求该类中具有四种不同访问权限的成员,再在另一个包中编写第二个类ClassB,并在该类中编写一个方法以访问第一个类中的成员。总结类成员访问控制的基本规则。

2.设计一个汽车类Car,实现构造方法的重载,然后利用这些构造方法,实例化不同的对象,输出相应的信息。

3.设计一个乘法类Multiplication,在其中定义三个同名的mul方法:第一个方法是计算两个整数的积;第二个方法是计算两个浮点数的积;第三个方法是计算三个浮点数的积。然后以Java Applet程序方式调用这三个同名的方法mul,输出其测试结果。

4.已知编一个抽象类AbstractShape如下所示:

abstract class AbstractShape {

final double PI=3.1415926;

    public abstract double getArea();

public abstract double getGirth();

}

请编写AbstractShape类的一个子类,使该子类实现计算圆面积方法getArea()和周长的方法getGirth()

5.按下列要求编程:

1)编写一个抽象类,至少有一个常量和一个抽象方法。

2)编写二个抽象类的子类,重写定义抽象类中的抽象方法。

3)编写一个主类使用3个类,进行某种运算。

6.设计一个形状Shapes接口,在其中定义计算面积的getArea( )方法和求周长的getPerimeter( )方法,然后设计一个Circle类以实现Shapes接口中的两个方法,最后以Java Application程序方式测试前述接口及其实现类,输出其测试结果。

7.使用继承和接口技术,编写一个程序,求解几何图形(如直线、三角形、矩形、圆和多边形)的周长和面积。

8.使用继承和接口技术,编写一个程序,求解一元多次方程(如一元一次、一元二次和一元高次方程)的解。

9.使用内部类技术构造一个线性链表。

10.参照例4-30以组合方式创建某类的适配器。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有