当前位置:文档之家› 第4章类与对象

第4章类与对象

第4章类与对象
第4章类与对象

、选择题

1 定义类头时,不可能用到的关键字是() 。

A) class B)private C)extends D)public

2. 下列类定义中,不正确的是()。

A) class x { ..... }

B) class x extends y { .......... }

C) static class x implements y1,y2 { ................ }

D) public class x extends Applet { ............... }

3. 下列类头定义中,错误的是()。

A)public x extends y {...}

B) public class x extends y {...}

C) class x extends y implements y1 {...}

D) class x {...}

4?设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。

A) float A a; B) public A a=A( );

C) A a=new int( ); D) static A a=new A( );

5?设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。

A) public A a=new A( ); B) public A a=A( );

C) A a=new class( ); D) a A;

6?设X、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。

A) public X x1= new Y( ); B) X x1= X ( );

C) X x1=new X( ); D) int X x1;

7.设X、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()。

A) static X x1; B) public X x1=new X(int 123);

C) Y x1; D) X x1= X( );

8?通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:____________________________________ 。

9. 设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是()。

A) void X(int k ){ i=k; } B) X(int k ){ i=k; }

C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; }

10. 有一个类A,以下为其构造方法的声明,其中正确的是()。

A)public A(i nt x){...} B)static A(i nt x){...}

C)public a(i nt x){...} D)void A(i nt x){...}

11. 有一个类A,以下为其构造方法的声明,其中正确的是()。

A)void A(int x){...} B)A(int x){...}

C)a(int x){...} D)void a(int x){...}

12. 设i、j、k 为类X 中定义的int 型变量名,下列类X 的构造方法中不正确的是( )。

A) X( int m){ ... } B) void X( int m){ ... }

C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... }

13. 设i , j 为类X 中定义的double 型变量名,下列X 类的构造方法中不正确的是( )。

A) double X(double k ){ i=k; return i; } C) X( ){i=6;j=8; }

B) X(double m, double n ){ i=m; j=n; } D) X(double k ){ i=k; }

二、填空题

1. 下面是一个类的定义,请完成程序填空。

public class _______________

{

int x, y;

Myclass ( int i, ________ ) // 构造方法

{ x=i; y=j;

}

}

14. 下面是一个类的定义,请将其补充完整。

class _____

{

String name;

int age;

Student( _____ s, int i)

{

name=s; age=i;

}

}

2. 下面是一个类的定义,请将其补充完整。

class ___________ // 定义名为myclass 的类

{

________ int var=666;

static int getvar()

{ return var; }

}

3?下面程序的功能是通过调用方法max ()求给定的三个数的最大值,

请将其补充完整。

public class Class1

{

public static void main( String args[] )

{

int i1=1234,i2=456,i3=-987;

int MaxValue;

MaxValue= __________ ;

System.out.println(" 三个数的最大值:"+MaxValue);

}

public _____ int max(int x,int y,int z)

{ int temp1,max_value;

temp1=x>y?x:y; max_value=temp1>z?temp1:z;

return max_value;

}

}

4. 下面是一个类的定义,请将其补充完整。

_________ A

{ String s;

____ int a=666;

A(String s1) { s=s1; } static int geta( ) { return a; }

}

三、程序阅读题

1. 下面是一个类的定义,根据题目要求回答以下问题.

精品文档

class B

{

private int x;

private char y;

public B(int i,char j)

{

x=i; y=j;

}

public void show()

{ System.out.println("x="+x+"; y="+y);

}

public void methodC(int x)

{ this.x=this.x+x;

y++; show();

}

}

(1) 定义类B的一个对象b,将类中的变量x初始化为10、变量y初始化为' 的语

A请写出相应句。

(2) 若在(1)问基础上有方法调用语句:

b.show(); 则输出如何?

(3) 若在(1)问基础上增加语句: b.methodC(1); 则输出为何?

2. 阅读程序,回答问题。

public class Test52

{

static String str1="Hello, Java world! \t";

static String str2="Hello, students! ";

public static void main(String args[])

{ System.out.print(str1); System.out.println(str2); }

}

问题:1)这是哪种形式的java 程序?

2)程序的输出是什么?

3. 写出下列程序的输出结果

public class Test

{

public static void main(String[] args)

{

Count myCount = new Count();

int times = 0;

for(int i=0;i<100;i++) increment(myCount , times);

System.out.println( “ count is ” + myCount.count);

System.out.println( “ time is ” + times);

}

public static void increment(Count c , int times)

{

c.count++;

times++;

}

}

class Count

{

public int count;

Count(int c)

{

count =c;

}

Count()

{

count =1;

}

}

4. 写出下列程序的输出结果:

public class Test

{

public static void main(String[] args)

{

Cirecle circle1 = new Circle(1);

Cirecle circle2 = new Circle(2);

// Attempt to swap circle 1 with circle2

“ Before swap:circle1 = ” +circle1.radius +” circle2 = ” +circle2.radius);

“ After swap: circle1 = ” +circle1.radius +” circle2 = ” +circle2.radius);

public static void swap(Circle x , Circle y)

{

System.out.println( +”y

Circle temp = x; x = y;

“ Before swap: x = = ” +y.radius);

” +x.radius

A

y , y = temp;

System.out.println(

“ Before swap: x = ius ” +x.rad +”y

= ” +y.radius);

}

}

答案:

5. 阅读下面程序,回答问题: public class Foo

{

int i;

static String s; void imethod()

{ }

static void smethod()

{ }

}

设 f 是 Foo 的一个实例,下列语句正确吗? System.out.println(f.i);

System.out.println(f.s); f.imethod(); f.smethod();

System.out.println(Foo.i); System.out.println(Foo.s); Foo.imethod(); Foo.smethod();

6. 下列程序的输出结果是什么? public class Foo

{

static int i=0; static int j=0;

public static void main(String[] args)

{

int i=2; int k=3;

{

int j=3;

System.out.println(

“”i ++j iis+ j);

System.out.println( swap(circle1,circle2); System.out.println(

}

} k = i +j;

System.out.println( “ k is ” +k); System.out.println( “ j is ” + j);

}

}

答案:

7. 根据下面的程序,指出下面每个元素的作用域(类作用域或块作用域)

a) 变量x

b) 变量y

c) 方法cude

d) 变量i

e) 变量yPos

public class CubeTest

{

int x;

public void print()

{

int yPos = 10;

for(x=1;x<=10;x++)

{

System.out.println(cude(x));

for(int i=1;i<=yPos;i++) System.out.println(" ");

}

}

public int cude (int y)

{

return y*y*y;

}

}

答案:

四、简答题

1. 面向对象的软件开发方法用什么把数据和基于数据的操作封装在一起?(

2. 在一个类定义中,用什么描述对象的状态? 用什么描述对象的行为?

3. 什么方法是一个特殊的方法,用于对对象进行初始化?

4. 一个源程序文件中,能有多于一个的public 类吗?

5. 构造方法的方法名可由编程人员任意命名吗?

6. 类的构造方法名必须和类名相同吗?

7. 构造函数有返回值吗?

8. 构造函数可以重载吗?

9. 如果一个类定义中没有定义构造方法,该类有构造函数吗?

10. 如果一个类定义中已经定义了构造方法,java 还会给它定义缺省的构造方法吗?

11. 类的访问控制权有哪两种?

12. 用什么修饰符修饰的方法称为静态方法? 用什么修饰符修饰的属性称为静态属性?

13. 静态属性和静态方法仅属于类的一个具体对象吗?它属于谁?

14. static 变量能是private 变量吗?

15. 使用静态成员都能以什么做前缀?

16. static 方法中能有this 引用吗?

17. 非static 方法中可以有this 引用吗?

18.static 方法能处理非static 成员吗?

19.非static 方法能处理static 成员吗?

五、编程题

1、//基本类定义

编写一个类,描述学生的学号、姓名、成绩。学号用整型,成绩用浮点型,姓名用String 类型。

编写一个测试类,测试学生类。

class Student{

int sNum;

double score;

String name;

}

public class T1_Student{

public static void main(String[] args){

Student s=new Student();

s.sNum=101;

s.score=97;

https://www.doczj.com/doc/c8251310.html,="张三";

System.out.println(https://www.doczj.com/doc/c8251310.html,+" 的学号是"+s.sNum+" 成绩是"+s.score);

} }

2、//基本类定义

将上述类进行改写,学生拥有判断自己的成绩是否及格的功能。并能够打印输出自己的姓名和是否及格的信息(方法名:printInfo ()) 编写一个测试类,对学生类进行测试。

class Student{

int sNum;

double score;

String name;

void printInfo(){ if(score>=60){

System.out.println(" 我的姓名是"+name+" 我的成绩为及格"); }

else{

System.out.println(" 我的姓名是"+name+" 我的成绩为不及格");

}

}

}

public class T1_Student{

public static void main(String[] args){ Student s=new Student(); s.sNum=101;

s.score=97;

https://www.doczj.com/doc/c8251310.html,="张三";

C++实验报告 第四章 类与对象

C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

第4章 类与对象2

一、选择题 1定义类头时,不可能用到的关键字是()。 A) class B)private C)extends D)public 2.下列类定义中,不正确的是()。 A) class x { .... } B) class x extends y { .... } C) static class x implements y1,y2 { .... } D) public class x extends Applet { .... } 3.下列类头定义中,错误的是()。 A)public x extends y {...} B) public class x extends y {...} C)class x extends y implements y1 {...} D)class x {...} 4.设A为已定义的类名,下列声明A类的对象a的语句中正确的是( )。 A) float A a; B) public A a=A( ); C) A a=new int( ); D) static A a=new A( ); 5.设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。 A) public A a=new A( ); B) public A a=A( ); C) A a=new class( ); D) a A; 6.设X 、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。 A) public X x1= new Y( ); B) X x1= X ( ); C) X x1=new X( ); D) int X x1; 7.设X 、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()。 A) static X x1; B) public X x1=new X(int 123); C) Y x1; D) X x1= X( ); 8.通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:_______________________________。 9. 设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( )。 A) void X(int k ){ i=k; } B) X(int k ){ i=k; } C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; } 10. 有一个类A,以下为其构造方法的声明,其中正确的是( )。 A)public A(int x){...} B)static A(int x){...} C)public a(int x){...} D)void A(int x){...} 11.有一个类A,以下为其构造方法的声明,其中正确的是( )。 A)void A(int x){...} B)A(int x){...} C)a(int x){...} D)void a(int x){...} 12.设i、j、k为类X中定义的int型变量名,下列类X的构造方法中不正确的是( )。 A) X( int m){ ... } B) void X( int m){ ... } C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... } 13. 设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是( )。 A) double X(double k ){ i=k; return i; } C) X( ){i=6;j=8; } B) X(double m, double n ){ i=m; j=n; } D) X(double k ){ i=k; }

C++第四章习题解答.

第四章类与对象习题 一.基本概念与基础知识自测题 4.1 填空题 5.1.1 引入类定义的关键字是(1)。类的成员函数通常指定为(2),类的 数据成员通常指定为(3)。指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。 答案: (1)class (2)公有的public (3)私有的private (4)公有的public (5)数据 (6)函数 4.1.2 类的访问限定符包括(1)、(2)和(3)。私有数据通常由 (4)函数来访问(读和写)。这些函数统称为(5)。 答案: (1)public(公有的) (2)private(私有的) (3)protected(保护的) (4)公有的成员函数 (5)类的接口 4.1.3 通常在逻辑上,同一类的每个对象都有(1)代码区,用以存储成员函数。而 在物理上通常只有(2)代码区。只有在(3)定义,并(4)的函数和加了关键字(5)的函数例外。 答案: (1)独立的 (2)共用的 (3)在类说明中 (4)不包括循环等复杂结构 (5)inline 4.1.4 C++中支持三种域:(1)、(2)、(3)。函数域被包括在 (4)中,全局域被包括在(5)中。using指示符以关键字using开头,后面是关键字(6),最后是(7)。这样表示以后在该名字空间中所有成员都(8)。如不使用using指示符则在使用时要加::,称为(9)运算符。 答案: (1)局部域(local scope) (2)名字空间域(namespace scope) (3)类域(class scope) (4)局部域 (5)名字空间域 (6)namespace (7)名字空间名

C++实验报告-第四章-类与对象

C++实验报告-第四章-类与对象

C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

第4章Java语言与面向对象作业习题与答案

第4章Java语言与面向对象作业习题与答案 一、简答题 1.什么是对象?什么是类? 对象是一种抽象数据类型。它包含了事物的静态特征(属性)和动态特征(行为)两大特征。 类是一组同种对象的集合与抽象。即是具有相同属性和方法的一组对象集合。2.Java语言的单继承是指什么? 一个类可以派生出多个子类,但子类只允许有一个父类,而不允许存在多个父类。3.在一个共有类中的数据成员及方法成员的访问控制符为缺省,则这个类可供什么样的包引用? 当一个类的访问控制符为public共有时,表明这个类作为整体对其它类是可见和可引用的;但其数据成员和方法成员访问控制符为缺省时,它们只能被包中类(含当前类)引用。4.抽象类的用途 (1)设计在更高的层次上进行,不考虑具体对象,从而大大简化了处理问题的复杂性; (2)设计出的类也具有更加良好的可扩展性。 5.什么是非静态的成员变量? 非静态成员即为实例成员变量(没有加static修饰的变量)。 6.异常Exception和错误Error有什么不同?Java如何处理它们? 答:错误通常是指程序本身存在非法情形,常常是因为代码存在问题而引起的,如造成系统崩溃、虚拟机粗错、动态链接失败等,这一类错误无法恢复或不可能捕获,并将导致应用程序中断。 异常表示另外一种"非同寻常"的错误。这种错误通常是不可预测,但可以被捕获且可以恢复。常见的异常情况包括内存不足、找不到所需文件等。 对于错误,编程人员可以通过对程序进行更仔细的检查,以避免这种错误。 对于异常,可以使用捕获机制进行捕获,再编写出相应的处理程序。 7.简单陈述Java的异常处理机制。 答:Java采取"抛出-捕获"的方式,一旦一个异常想象产生,Runnable环境和应用程序会抛出各种标准类型和自己定义的异常,系统就可以捕获这些异常,并一定有相应的机制来处理它,确保不会产生司机、死循环或其它对操作系统的损害,从而保证了整个程序运行的安全性。 8.简单陈述throw语句和throws关键字之间的差别。 答:throw语句是在一个方法中用来直接抛出异常对象,其格式是: throw 异常对象; throws关键字是用一个方法声明首部,用来指出这个方法中可能产生若干种异常,其格式:[方法修饰符] 返回类型方法名(参数表)throws 异常类型表 { /*方法体*/ } 二、填空题 1.所有Java应用程序都必须包含的一个类方法是main() 。 2.面向对象程序设计语言的三种重要特性是封装性、继承性和多态性。 3.方法重载与方法覆盖的不同有:方法重载是指允许在同一个类中定义多个同名方法,它们通过形参的个数或形参参数的类型来区别;方法覆盖是指在子类中重新定义了与父类中的方法同名的方法。

第4章类与对象

、选择题 1 定义类头时,不可能用到的关键字是() 。 A) class B)private C)extends D)public 2. 下列类定义中,不正确的是()。 A) class x { ..... } B) class x extends y { .......... } C) static class x implements y1,y2 { ................ } D) public class x extends Applet { ............... } 3. 下列类头定义中,错误的是()。 A)public x extends y {...} B) public class x extends y {...} C) class x extends y implements y1 {...} D) class x {...} 4?设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。 A) float A a; B) public A a=A( ); C) A a=new int( ); D) static A a=new A( ); 5?设A为已定义的类名,下列声明A类的对象a的语句中正确的是()。 A) public A a=new A( ); B) public A a=A( ); C) A a=new class( ); D) a A; 6?设X、Y均为已定义的类名,下列声明类X的对象x1的语句中正确的是()。 A) public X x1= new Y( ); B) X x1= X ( ); C) X x1=new X( ); D) int X x1; 7.设X、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是()。 A) static X x1; B) public X x1=new X(int 123); C) Y x1; D) X x1= X( ); 8?通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现:____________________________________ 。 9. 设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是()。 A) void X(int k ){ i=k; } B) X(int k ){ i=k; } C) X(int m, int n ){ i=m; j=n; } D) X( ){i=0;j=0; } 10. 有一个类A,以下为其构造方法的声明,其中正确的是()。 A)public A(i nt x){...} B)static A(i nt x){...} C)public a(i nt x){...} D)void A(i nt x){...} 11. 有一个类A,以下为其构造方法的声明,其中正确的是()。 A)void A(int x){...} B)A(int x){...} C)a(int x){...} D)void a(int x){...} 12. 设i、j、k 为类X 中定义的int 型变量名,下列类X 的构造方法中不正确的是( )。 A) X( int m){ ... } B) void X( int m){ ... } C) X( int m, int n){ ... } D) X( int h,int m,int n){ ... } 13. 设i , j 为类X 中定义的double 型变量名,下列X 类的构造方法中不正确的是( )。 A) double X(double k ){ i=k; return i; } C) X( ){i=6;j=8; } B) X(double m, double n ){ i=m; j=n; } D) X(double k ){ i=k; } 二、填空题

C++实验报告 第四章 类与对象(完整资料).doc

【最新整理,下载后即可编辑】 C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage 等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。

相关主题
文本预览
相关文档 最新文档