类和对象练习题
类和对象
一、选择题
1、下面对方法的作用描述不正确的是:( d )
A、使程序结构清晰
B、功能复用
C、代码简洁
D、重复代码
2、方法定义的变量:( b )
A 、一定在方法所有位置可见B、可能在方法的局部位置可见
C、在方法外可以使用
D、在方法外可见
3、方法的形参:(a)
A、可以没有
B、至少有一个
C、必须定义多个形参
D、只能是简单变量
4、方法的调用:(c)
A、必须是一条完整的语句
B、只能是一个表达式
C、可能是语句,也可能是表达式
D、必须提供实际参数
5、return 语句:( d)
A、不能用来返回对象
B、只可以返回数值
C、方法都必须含有
D、一个方法中可以有多个return 语句
6、void 的含义:(d)
A、方法体为空
B、方法体没有意义
C、定义方法时必须使用
D、方法没有返回值
7、main()方法的返回类型是:( c )
A 、boolean B、int C、void D、static
8、方法重载所涉及的方法:( a )
A、有相同的名字
B、参数个数必须不同
C、参数类型必须不同
D、返回类型必须不同
9、下面关于类和对象之间关系的描述,正确的是( c )
A、联接关系B、包含关系C、具体与抽象的关系D、类是对象的具体化
10、下面关于java中类的说法哪个是不正确的( c )
A、类体中只能有变量定义和成员方法的定义,不能有其他语句。
B、构造方法是类中的特殊方法。
C、类一定要声明为public的,才可以执行。
D、一个java文件中可以有多个class定义。
11、下列哪个类声明是正确的( d)
A、public void H1{…} B 、public class Move(){…}
C、public class void number{}
D、public class Car{…}
12、下面的方法声明中,哪个是正确的(c)
A、public class methodName(){}
B、public void int methodName(){}
C、public void methodName(){}
D、public void methodName{}
13、下述哪些说法是不正确的?( b )
A、实例变量是类的成员变量
B、实例变量是用static关键字声明的
C、方法变量在方法执行时创建
D、方法变量在使用之前必须初始化
14、下面对构造方法的描述不正确是( b)。
A、系统提供默认的构造方法
B、构造方法可以有参数,所以也可以有返回值
C、构造方法可以重载
D、构造方法可以设置参数
15、定义类头时,不可能用到的关键字是( b)。
A、class
B、private
C、extends
D、public
16、下列类头定义中,错误的是( )。
A、public x extends y {...}
B、public class x extends y {...}
C、class x extends y implements y1 {...}
D、class x {...}
17、设A为已定义的类名,下列声明A类的对象a的语句中正确的是( ) 。
A、float A a;
B、public A a=A( );
C、A a=new int( );
D、static A a=new A( );
18、设i , j为类X中定义的int型变量名,下列X类的构造方法中不正确的是( a )。
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; }
19、有一个类A,以下为其构造方法的声明,其中正确的是
( b )。
A、void A(int x){...}
B、public A(int x){...}
C、public a(int x){...}
D、static A(int x){...}
20、下列方法定义中,不正确的是( c )。
A、float x( int a,int b ) { return (a-b); }
B、int x( int a,int b) { return a-b; }
C、int x( int a,int b ); { return a*b; }
D、int x(int a,int b) { return 1.2*(a+b); }
21、设i , j为类X中定义的double型变量名,下列X类的构造方法中不正确的是( a )。
A、double X(double k ){ i=k; return i; }
B、X( ){i=6;j=8; }
C、X(double m, double n ){ i=m; j=n; }
D、X(double k ){ i=k; }
22、设ClassA为已定义的类名,下列声明Class A类的对象ca的语句中正确的是( a )。
A、public ClassA ca=new ClassA( );
B、public ClassA ca=ClassA( );
C、ClassA ca=new class( );
D、ca ClassA;
23、设m , n为类A中定义的int型变量名,下列A类的构造方法中不正确的是( a )。
A、void A(int k ){ m=k; }
B、A(int k ){ m=k; }
C、A(int m, int n ){m=i; n=j; }
D、A( ){m=0;n=0; }
24、设i、j、k为类School中定义的int型变量名,下列类School的构造方法中不正确的是( b )。
A、School ( int m){ ... }
B、void School ( int m){ ... }
C、School ( int m, int n){ ... }
D、School ( int h,int m,int n){ ... }
25、下列选项中,哪个是java语言所有类的父类( c )
A、String
B、Vector
C、Object
D、KeyEvent
26、Java中所有的类都是通过直接或间接地继承(a )类得到的。()
A、https://www.360docs.net/doc/18856021.html,ng.Object
B、https://www.360docs.net/doc/18856021.html,ng.Class
C、任意类
D、
以上答案都不对
27、对于任意一个类,用户所能定义的构造方法的个数至多为( d )。
A、0个
B、1个
C、2个
D、任意个
28、构造方法何时被调用(b )
A、类定义时
B、创建对象时
C、调用对象方法时
D、使用对象的变量时
29、类Test1定义如下
public class Test1{
public float aMethod(float a,float b){ }
( b )
}
将以下哪种方法插入()是不合法的。()
A、 public float aMethod(float a,float b,float c){ }
B、 public float aMethod(float c,float d){ }
C、 public int aMethod(int a,int b){ }
D、public int aMethod(int a,int b,int c){ }
30、用来导入已定义好的类或包的语句是( b )
A、main
B、import
C、public class
D、class
31、类是具有相同( a )的集合,是对对象的抽象描述。()
A、属性和方法
B、变量和方法
C、变量和数据
D、对象和属性
32、一个对象的生命周期分( c )3个阶段。()
A、使用、生成和清除
B、清除、使用和生成
C、生成、使用和清除
D、生成、清除和使用
33、以下(a )是专门用于创建对象的关键字。()
A、new
B、double
C、class
D、int
34、表达式(c)将返回当前的系统时间和日期()
A、DataFormat.getDataTime B 、new Data C 、DataFormat.getDataTimeInstance() D、new CurrentData
35、()为程序员提供了一些可完成通用任务的现有类(A)
A、Java类库 B 、preExisting C、java 代码 D 、library关键字
36、程序员通常会使用( C )
A 、程序员定义的方法
B 、现有的方法
C 、程序员定义的得带以及现有的方法
D 、既不是程序员定义的方法也不是现有的方法
37、利用方法中的()语句可为调用方法返回一个值( A )
A、return B 、back C、end D 、以上答案都不对
38、(A)方法用做返回两个参数中的较大值()
A 、max
B 、maximum C、larger D、greater
39、(D )将被传送至一个被调用的方法()
A、返回值
B、返回类型
C、参数表
D、参数列表
40、方法的参数可以是( D )
A、常量
B、表达式
C、变量 D 、以上答案都对
41、()是位于方法头中的一个以逗号分隔的声明列表( B )
A、参数表B、参数列表C、值表D、变量表
42、方法的定义是由()组成的( D )
A、一个方法 B 、一个方法体 C 、一对花括号 D 、以上答案都对
43、一个(D)对象将包括int型数据()
A、IntegerObject
B、Int
C、IntData
D、Integer
44、在方法调用过程中。位于方法名之后圆括号的变量被称为( B )
A、变元 B 、参数 C 、语句 D 、声明
45、一条return语句将给调用程序返回(D)个值()
A 、0 B、 1 C、任意数量D、A和B
46、方法的第一行被称为方法的( D )
A 、方法体B、标题C、调用者D、方法头
47、实例变量的作用域整个的( C )
A、语句块 B 、方法 C 、类 D 、以上答案都不对
48、在某个方法部定义的变量被称为(B )
A 、实例变量B、局部变量C、类变量D、隐藏变量
49、在一个类的部声明,但又处于该类方法外部的变量被称为(C )
A、局部变量
B、隐藏变量
C、实例变量
D、常量
50、从定义局部变量语句的外部访问该局部变量,会导致()出现(A )
A、逻辑出错 B 、编译错误C、运行错误 D 、以上答案都不对
51、实例变量( D )
A 、是在一个类的部声明的变量
B 、的作用域为整个类
C 、可被同一类中的任何方法所访问
D 、以上答案都对
52、当方法传递一个参数时,将该参数值的一个拷贝传递给方法的传递方式称为( B )
A、调用传递
B、值传递
C、引用传递 D 、方法传递
53、当一个变量在应用程序的整个生命周期中被使用,且整个过程中的其他值也不能被改变时,那么将他声明为一个( B )
A 、局部变量B、常量C、实例变量D、以上答案都不对
54、关键字()表示一个类定义的开始( C )
A、declare
B、new
C、class
D、以上答案都不对
55、类的定义必须包含在一对()( B )
A、方括号
B、花括号
C、逗号
D、圆括号
56、实例变量的初始化( B )
A 、是在他们声明时完成
B 、将被设置为默认值
C 、是在一个构造方法中完成的
D 、以上答案都对
57、某个方法,在保证参数值有效性的前提下设置其实例变量number,该方法的方法名最好取( C )
A、number B、set C、setNumber
D、setValue
58、某个方法,在保证参数值有效性的前提下获取其实例变量number,该方法的方法名最好取( C )
A、number B、get C、getNumber D、getValue
59、通过使用关键字()创建对象( D )
A、object B 、instantiate C、create D、new
60、参照以下Java代码,以下四个叙述中最确切的是(C)
class A{
int x; static int y;
void fac(String s){System. out. println("字符串:"+s);}
}
A、x、y和s都是成员变量
B、x是实例变量、y 是类变量、s是局部变量
C、x和y是实例变量、s是参数
D、x、y和s都是实例变量
61、下列关于变量作用域的描述中,不正确的一项是
( C )
A、变量属性是用来描述变量作用域的
B、局部变量作用域只能是它做在的方法代码段
C、类变量能在类的方法中声明
D、类变量的作用域是整个类
62、下列关于变量作用域的说法中,正确的一项是
( B )
A、方法参数的作用域是方法外部代码段
B、异常处理参数的作用域是方法外部代码段
C、局部变量的作用域是整个类
D、类变量的作用域是类的某个方法
63、System类在哪个包中?( D )
A 、java.util
B 、java.io
C 、java.awt
D 、https://www.360docs.net/doc/18856021.html,ng
64、给出下面代码段
1) public class Test {
2) int m, n;
3) public Test() {}
4) public Test(int a) { m=a; }
5) public static void main(String arg[]) {
6) Test t1,t2;
7) int j,k;
8) j=0; k=0;
9) t1=new Test();
10) t2=new Test(j,k);
11) }
12) }
哪行将引起一个编译时错误?( D )
A 、line 3 B、line 5 C、line 6 D、line
10
65、对于下列代码、
1) class Person {
2) public void printValue(int i, int j) {//... }
3) public void printValue(int i){//... }
4) }
5) public class Teacher extends Person {
6) public void printValue() {//... }
7) public void printValue(int i) {//...}
8) public static void main(String args[]){
9) Person t = new Teacher();
10) t.printValue(10);
11) }
第10行语句将调用哪行语句?()
A 、line 2 B、line 3 C 、line 6 D、line 7
66、下列关于构造方法的说话正确的是( B )
A、类中的构造方法不可省
B、构造方法必须与类同名,但方法不能与class同名
C 、类的构造方法在一个对象被创建时自动执行
D、一个类只能定义一个构造方法
67、下列语句中,对构造方法的描述错误的是(D )
A、构造方法的名称必须和类名相同
B、构造方法没有返回值,返回类型也不能用void
C、构造方法在一个类中可以多次出现
D、当重写了带参数的构造方法,系统默认的不带参数的构造方法依然存在
68、下面关于java中类的说法哪个是不正确的( A )
A、类体中只能有变量定义和成员方法的定义,不能有其他语句
B、构造方法是类中的特殊方法
C、类一定要声明为public 的,才可以执行
D、一个java文件中可以有多个class定义
69、下列哪个不是面向对象的三大特性之一( D )
A、封装性
B、继承性
C、多态性
D、重载
70、下面哪种语言不是面向对象语言? ( C )
A、java
B、C++ C 、 C D、Smalltalk
71、在创建对象时必须( D )
A、先声明对象,然后才能使用对象
B、先声明对象,为对象分配存空间,然后才能使用对象
C、先声明对象,为对象分配存空间,对对象初始化,然后才能使用对象
D、上述说法都对
72、以下叙述不正确的是( D )
A、面向对象方法追求的目标是、尽可能地运用人类自然的思维方式来建立问题空间的模型,构造尽可能直观、自然的表达求解方法的软件系统。
B、面向对象方法的优点有、易于维护,可重用性好,易于理解、扩充和修改。
C、面向对象=对象+分类+继承+消息通信。
D、面向对象的基本特征是封装性、继承性和并行性。
73、对于构造函数,下列叙述不正确的是( B )。
A、构造函数是类的一种特殊函数,它的方法名必须与类名相同。
B、构造函数的返回类型只能是void型。
C、构造函数的主要作用是完成对类的对象的初始化工作。
D、一般在创建新对象时,系统会自动调用构造函数。
二、填空题
1、通常用关键字NEW 来新建对象,通过类创建对象的基本格式为:类名对象名=new 构造方法(); 。
2、通过类MyClass中的不含参数的构造方法,生成该类的一个对象obj,可通过以下语句实现Myclass obj=new Myclass(); 。
3、面向对象程序设计的主要特点是继承、多态和封装。
4、构造方法是类中的一种特殊方法,它用来定义对象的初始化。
5、在Java程序中定义的类中包括有两种成员,分别是:成员变量、成员方法。
6、用static修饰的方法,称为静态方法。它们不是对象的方
法,而是整个类的方法。静态方法只能处理用关键字修饰的数据。
7、列举三个常用类库的包、java.util
、java.io 和java.awt 。
8、Java中所有类都是类Object 的子类。
9、Java中类成员的限定词有以下几种:private、public、friendly、protected其中,public 的限定的围最大。
10、被关键字final /private 修饰的方法是不能被当前类的子类重新定义的方法。
11、JA V A程序的基本元素是类。
12、class 是JA V A语言中定义类时必须使用的关键字。
13、定义在类中方法之外的变量称为成员变量。
14、方法声明包括方法头和方法体两部分。
15、方法头确定方法的方法名,形式参数的名字和类型、返回值的类型和绯闻限制。
16、方法体由包括在花括号的声明部分和语句部分组成,描述方法的功能。
17、类头定义的基本格式要求为__修饰符__ _、__class关键字_ __、_____ 类名__和__ 花括号__。
18、对象是指Java程序通过规则引擎调用此规则包时,将数据存储在Java的类中,以对象的形式传入。
19、在Java类对象的编辑窗口中直接输入需要导入的类的完成类名。
20、类是Java的核心容,是用来创建对象的模板。
21、类有两种基本成员是方法和成员变量。
22、一个Java源文件就是由若干个类构成的。
23、类是抽象,而对象是具体。
24、.对象的创建、创建对象的过程就是类的实例化的过程
25、对象的创建的步骤对象的声明、及对象的实例化。
26、使用new运算符实例化一个已经声明的类
27、实例化一个对象时,会同时调用类的构造方法对它进行。
28、类的是特殊的类方法,它必须和类同名,并且不能有返回类型,也不能用void来标注。
29、构造方法是具有特殊地位的方法,不可以调用构造方法。
30、一个类中可以有多个
31、类里面如果没有,系统会调用默认的构造方法,默认的构造方法是不带任何参数的。
32、包主要来解决的问题。
33、既是命名机制,又是可见度控制机制。
34、java语言的属性与方法的引用均使用__ _运算符。
35、定义类时通常使用关键字____ ,,___。
36、写出成员变量的定义格式__ _______。
37、对象的生命周期包括三个阶段、、。
38、Java中类成员的访问控制符有以下几种、private, public,__ ___, __ ____。其中,__ ______的限定的围最大。
39、Java中所有类都是类__ _的子类。Applet类是系统类_ __类的子类,存在于_ ___包中。
40、按作用域分类,变量有局部变量、__ _____、方法变量和异常处理参数。
41、JA V A语言通过接口支持_____ ____继承,使类继承具有更灵活的扩展性。
42、JA V A语言中___ ___类是所有类的根。
三、程序填空
1、请写出下面程序的运行结果。
package .gem.j2SE03;
abstract class A {
private int x = 100;
public A(){
this.print();
}
public abstract void print();
}
class B extends A {
private int x = 200;
public B(int x){
this.x = x;
}
public void print(){
System.out.println("x=" + x);
}
}
public class TestJava {
private void mian() {
A a = new B(20);
}
}
程序运行结果为:
2、请写出下面程序的运行结果。
public class Test extends TT{
public void main(String args[]){
Test t = new Test("Tom");
}
public Test(String s){
super(s);
System.out.println("How do you do?");
}
public Test(){
this("I am Tom");
}
}
class TT{
public TT(){
System.out.println("What a pleasure!");
}
public TT(String s){
this();
System.out.println("I am "+s);
}
}
程序运行结果为:
3、阅读下列程序,写出程序运行的结果:public class Test {
public static void main (String[] args) {
String s1=new String("Hello");
String s2="Hello";
String s3="Hello";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println(s2==s3);
System.out.println(s2.equals(s3));
String s4=s1;
System.out.println(s1==s4);
System.out.println(s1.equals(s4));
}
}
程序运行结果为:
4、public class Test {
private static void printArray(int[] arr) {
for(int i=0;i< arr.length;i++)
System.out.print(arr[i]+",");
System.out.println("\n");
}
private static void changeValue(int value) {
value*=2;
}
private static void changeValue(int[] arr) { for(int i=0;i arr[i]*=2; } public static void main (String[] args) { int[] arr={1,2,3,4,5}; changeValue(arr[0]); printArray(arr); changeValue(arr); printArray(arr); } } 程序运行结果为: 5、class MyException extends Exception { public MyException(String message) { super(message); } } public class Test { private static void fun1() throws MyException { throw new MyException("An MyException object is thrown in fun1()."); } private static void fun2() throws MyException { try { fun1(); } catch(NullPointerException ex) { System.out.println("NullPointerException、"+ex.getMessage()); } finally { System.out.println("Go through finally code in fun2()."); } } public static void main (String[] args) { try { fun2(); } catch(MyException ex) { System.out.println("MyException:"+ex.getMessage() ); } catch(Exception ex) { System.out.println("Exception:"+ex.getMessage()); } } } 程序运行结果为: 6、下面是一个类的定义,请完成程序填空。 public class ___ _______ { int x, y; Myclass ( int ,int ) // 构造方法 { x=i; y=j; } } 程序运行结果为: 7、下面是一个类的定义,请将其补充完整。 class ___ __ { String name; int age; Student( ___ __s, int i) { name=s; age=i; } } 程序运行结果为: 8、下面程序的功能是通过调用方法max()求给定的三个数的最大值,请将其补充完整。 public class Class1{ public static void main( String args[] ){ int i1=1234,i2=456,i3=-987; System.out.println("三个数的最大值、"+ ); } public static 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; } } 程序运行结果为: 9、写出下列程序的输出结果 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; } } 程序运行结果为: 10、阅读下列程序,写出程序运行的结果: class Circle { double radius; public Circle(double r){ this.radius=r; } } public class Test{ public static void main(String[] args){ Circle circle1 = new Circle(1); Circle circle2 = new Circle(2); System.out.println("Before swap:circle1 ="+circle1.radius+" circle2 = "+circle2.radius); swap(circle1,circle2); System.out.println("After swap:circle1 = "+circle1.radius+" circle2 = "+circle2.radius); } public static void swap(Circle x , Circle y){ System.out.println("Before swap: x = "+x.radius+" y = "+y.radius); Circle temp = x; x = y; y = temp; System.out.println("Before swap: x = "+x.radius+" y = "+y.radius); } } 程序运行结果为: 11、下列程序的输出结果是什么? 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 is ”+ i + j); k = i +j; System.out.println(“k is ”+k); System.out.println(“j is ”+ j); } } 程序运行结果为: 12、运行类C的输出结果是什么? class A{ public A(){ System.out.println("The default constructor of A is invoked"); } } class B extends A{ public B(){ System.out.println("The default constructor of B is invoked"); } } public class C{ public static void main(String[] args){ B b = new B(); } } 程序运行结果为: 13、阅读下列程序写出输出结果: class A{ String s="class A"; void show(){ System.out.println(s); } } class B extends A{ String s="class B"; void show() { System.out.println(s); } } public class TypeConvert{ public static void main(String args[]){ B b1; B b2=new B(); A a1,a2; a1=(A)b2; a2=b2; System.out.println(a1.s); a1.show(); System.out.println(a2.s); a2.show(); b1=(B)a1; System.out.println(b1.s); b1.show(); System.out.println(b2.s); b2.show(); } } 程序运行结果为: 14、阅读下列程序,写出程序运行的结果: class A { int i, j; public A(){ this.i=0; this.j=0; } public void print(){ System.out.println ("i="+i+""+"j="+j);} } class B extends A{ int m; public B (int i, int j, int m){ super (); this.m=m; } public void print (){System.out.println ("i="+i +" m="+m);} } public class C{ public static void main(String args[]){ A a=new A(); B b=new B(1, 2, 3); a.print (); b.print (); } }} 程序运行结果为: 15、阅读下列程序,写出程序运行的结果:class Demo { public void test () {System.out.println ("NO");} public void test (int i) {System.out.println (i);} public void test (int a, int b) {System.out.println (a+b);} } public class Test { public static void main(String args[]){ Demo de=new Demo(); de.test(); de.test(5); de.test(6,8); } } 程序运行结果为: 16、阅读下列程序,写出程序运行的结果:class Cube{ int width; int height; int depth; Cube(int x,int y,int z){ this.width=x; this.height=y; this.depth=z; } public int vol(){ return width*height*depth;}} public class UseCube { public static void main(String[] args) { Cube a=new Cube(3,4,5); System.out.println("长度="+a. width); System.out.println("体积="+a.vol()); } } 实验5:Java类与对象 一、实验目的 (1)使用类来封装对象的属性和功能; (2)掌握Java类的定义。 (3)java对象的使用 二、实验任务 (1)按要求编写一个Java程序。 (2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。 三、实验内容 1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。 class Student{ long studentID; int classID; String name; String sex; int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; https://www.360docs.net/doc/18856021.html,=name; this.sex=sex; this.age=age; } public long getStudentID(){ return studentID; } public int getClassID(){ 实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/18856021.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 福建师范大学实验报告 课程:C++ 实验名称:类和对象二第 1页共 5页 系别:实验日期年月日 专业班级:组别_____________ 实验报告日期年月日 姓名:学号:报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字 一、实验题目:实验九类和对象(二) 二、实验环境: 三、实验目的 (1)进一步加深对类和对象的理解。 (2)掌握类的构造函数和折购函数的概念和使用方法。 (3)掌握对对象数组,对象的指针及其使用方法。 (4)掌握友元的概念和使用。 (5)了解类模板的使用方法。 四、实验内容 (1)有以下程序: 1、阅读此程序,分析其执行过程,然后上机运行,对比输出结果。 2、修改上面的程序,增加一个fun函数,改写main函数,在main函数中调用fun函数,在fun函数中使用对象的引用(Student&)作为形参。 (2)商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售 时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3个销售员销售情况为: 销售员号(num)销售件数(quantity)销售单价(price)101 5 23.5 102 12 24.56 103 100 21.5 请编程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。 (3)有以下程序: 请读者分析和运行此程序,注意友元函数Time::display的作用。将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。 修改后上机调试和运行。 宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告 }*/ // ~CPU() {cout<<"析构了一个CPU!"< 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验报告_实验5类与类关系与抽象类(学生 学号_姓名) 一、实验目的 1.理解继承的概念,掌握子类的创建方法; 2.熟悉成员变量的隐藏和方法覆盖; 3.掌握使用super访问被隐藏、覆盖的基类变量与方法; 4.理解继承的层次结构,熟悉构造方法的执行顺序; 5.理解访问修饰符的作用,熟悉访问修饰符对子类继承性的影响; 6.熟悉子类对象向上转型的实现方法和Object类的基本用法; 7.理解多态种类、意义、实现条件及基本应用; 8.理解内部类的作用、种类、实现方法及注意事项; 9.理解类与类之间的关系,了解单例模式的实现机理; 10.理解抽象类、抽象方法概念,熟悉它们的声明、使用。 二、实验内容与步骤 1.(基础题)根据题意及注释补充所缺少代码,然后运行程序 public Student(){} public Student(String sno, String sname, int age) { this.sname=sname; this.sno=sno; this.age=age; } public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname= sname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } (1): class CollegeStudent extends Student (2): getSno() (3): getSname() (4): getAge() (5): major (6): student.setAge(26) (7): student.setSname("Jack") (8): cstudent.setSname("Jerry") (9): cstudent.setSno("1840700101") (10): cstudent.setAge(23) (11): cstudent.setMajor("物联网工程") 回答相关问题: (1)程序中有多少个类,哪个是主类?哪个是基类?哪个是子类? (2)程序中子类继承了基类哪些成员?基类对象如何给成员赋初值?子类对象又是如何给成员赋值? (3)是否可以不定义Student类的无参构造器? 2.(基础题)分析、运行以下程序,并回答相关问题: (1)分析程序,找出有问题的代码,请问出错原因是什么? 实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。 类和对象 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 2、两游戏角色决斗。(选做) 角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。给定二个不同的角色,判定交手的胜负关系。 提示: step1:建立角色类,给出相应的成员,并能以生命值、经验值初始化角色对象。 step2:建立fight方法,接收二个角色类型的参数,返回胜者。 step3:初始化二角色,调用fight方法。 3、根据分数录取学生。 设计一个学校类,其中包含成员变量line(录取分数线)和对该变量值进行设置和获取的方法。 编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。它还有获取学生的综合成绩和体育成绩的方法。 编写一个录取类,它的一个方法用于判断学生是否符合录取条件。其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大于300。在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出其信息及“被录取”。 四、实验记录与分析(可自拟或选择) 1、重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。 2、每个对象拥有各自的实例成员变量,而所有对象共享一个类成员变量。 3、实例成员变量通过对象引用,类成员变量通过类或对象名访问。 实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程 选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3: 图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构实验5 类和对象1答案
实验3 类和对象
C++实验报告 类和对象(2)
实验四 类与对象
实验报告_实验3 类与对象
实验报告_实验5 类与类关系与抽象类(学生学号_姓名)
C++语言程序设计实验答案_类与对象
实验5 类和对象
实验一 类和对象
C++实验二类与对象(附答案)