作业+实验_类和对象基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三、简答题
1、类和对象的关系? 类定义了一种新的数据类型,可以用新类型来创建该类型的对象。 类(class)是对象(object)的模板,而对象是类的一个实例。 2、定义一个类需要包含什么元素? 一个类包含属性和方法。该类具有哪些特征使用属性表示,该类具有哪 些行为使用方法来表示。 3、如何使用this关键字? This指向自己的引用,即当前方法所在的对象。 它的一个主要作用是要将自己这个对象当做参数,传送给别的对象中的 犯法。或者在类定义时使用this来引用自己的属性或方法。 4、类体中的方法包含哪些分类? 按返回值分:有返回值、无返回值 按参数分:无参数、有参数(单个参数,多个参数) 按范围或功能分:实例方法、类方法、构造方法 5. 什么时候为类中的实例变量分配内存空间? 在使用类创建实例对象时会为其分配空间。(通过new关键字和构造 函数为其实例化的时候) 6. 什么叫方法的重载?构造方法可以重载吗? 一个类中可以有多个方法具有相同的名称,但这些犯法的参数必须不 同,即或者是参数个数不同,或者是参数的类型不同,或者是参数的顺 序不同。 构造方法可以重载,而且构造方法的重载是方法中使用频率最高的一 种。 7. 简述类变量和实例变量的不同? (1)不同对象的实例变量将分配不同的内存空间,实例变量则属性 独有,改变某一个对象的值不影响其他对象;而所有对象的类变量占用
类和对象基础 1、 选择题
1、 下列哪一个不属于JAVA语言的数据类型 A)指针类型 B)类 C)数组 D)浮点类型 答案:A 2、 声明类的关链字是 A)Class B)class C)void D)main 答案: B 3、 不属于java类中的变量的是 A)实例成员变量 B)类成员变量 C)局部变量 D)寄存器变量 答案: D 4、 在Java中,一个类可同时定义许多同名的方法,这些方法的形 式参数的个数、类型或顺序各不相同,传回的值也可以不相 同,这种面向对象程序特性称为 A)隐藏 B)覆盖 C)重载
int a=4,b=6,c=8; String s="abc"; System.out.println(a+b+s+c); System.out.println(); } } A)ababcc B)464688 C)46abc8 D)10abc8 答案:D 9、 下列关于变量作用域的说法中,正确的一项是 A)方法参数的作用域是方法外部代码段; B)异常处理参数的作用域是方法外部代码段; C)局部变量的作用域是整个类; D)局部变量的作用域是类的某个方法; 答案:D 10、 下列关于JAVA语言中要使用的一个变量,不正确的是: A)在JAVA程序中要使用一个变量,必须先对其进行声明; B)变量声明语句可以在程序的任何地方,只要在变量使用前 就可以; C)变量不可以在其作用域之外使用; D)局部变量在使用之前可以不初始化,系统使用默认的初始 值; 答案:D 11. 一个int型整数和一个double型浮点数进行加法运算,结果类型 是( ) A. Int型 B. Double型 C. Float型
同一块内存空间,类变量是所有对象共有的,改变其中一个对象的值, 其他对象得到的就是改变后的结果。 (2)类变量在类被加载到内存是就为其分配内存空间,而实例变量 在使用new创建对象时,才为其分配内存空间; (3) 类变量可以通过对象和类名访问,而实例变量只能通过对象访 问。 (4)类变量通过static关键字修饰,实例变量不需要。 8. 通过Student stu;语句定义一个用户类型变量时,是否能在内存 中创建对象? 通过Student stu;语句仅仅声明了一个类型为Student,名称为stu 的引用变量。这个引用变量具有指向一个Student对象的潜在可能,但 还没有指向一个Student对象。如果要想使stu指向一个全新的Student 对象,在运行时用特定的java关键字new在JVM存储空间中分配Student 对象。即通过赋值语句将引用变量和对象关联起来, Student stu=new Student()。
D. Long型 答案:B 12. 一个可以独立运行的Java应用程序( ) A. 可以有一个或多个main方法 B. 最多有两个main方法 C. 可以有一个或0个main方法 D. 只能有一个main方法 答案:D 13. ( ) 方法是JavaApplication执行的入口点。 A. Main方法 B. Init方法 C. Man方法 答案:A 13. 以下的变量定义语句中,合法的是( ) A. Int long=3.2345333L; B. Byte $_b1=224333; C. Float _*5=345.33532F; D. Double a=Double.MAX_VALUE; 答案:D 14. 下列关于Java程序结果的描述中,不正确的一项是( ) A. 一个Java源文件可以包括多个类定义,但只能有一个public类; B. 一个Java源文件可以包括一个package语句; C. 一个Java源文件可以有多个public类; D. 源文件名和程序类名必须保持一致。 答案:C
1
对应的set方法为: {this.abc=abc;} 对应的get方法为: this.abc}; ] 4. 完成后编译
void int
setAbc(int
abc)
getAbc(){return
2
1. 编写名为: Student的类,用于描述学生; 2. 学生有:姓名,年龄,班级(定义为类变量), 成绩; 3. 要求变量分别有相应的 set / get方法; 4. 此类有两个构造方法;一个是无参数,一个是 有参数(参数与变量对应),构造方法用于初始化 相关变量; 5. 在此类类中定义一个名为 speak 的类方法;方 法中有语句: System.out.println(“说中 文….”); 6. 完成后编译 1. 编写一名为: Circle 的类, 用于描述圆; 2. 在类中定义一个实例变量用于存放半径, 并有 相应的set, get方法; 3. 在类中定义一个无参数的构造方法, 初始化半 径值为: 5; 4. 在类中有两个实例方法,一个用于计算并返回 面积,名为: double area(); 一个用于计算并 返回周长,名为: double girth(); 5. 再编写主类: Test3.java; 6. 在主类中用Circle类创建一个对象; 调用相应 的方法计算并输出周长和面积; 改变半径为 10 后,再次计算并输出周长和面积; 1. 编写名为: Taper 类,用于描述圆锥; 2. 在类中定义有两个实例变量,一个是高 ,一个 是底(即圆); 有对就的 set,get方法; 3. 在类中定义一个无参数构造方法,初始化高为 7, 底(圆的半径为5) ; 4. 在类中有一个实例方法名为 double bulk();用
2、 分析题
15. 下面程序是否通过编译,为什么? public class abc{ int age; String sname; age=23; } 答案:实测变量的赋值只能在定义的时候就赋值或者在某个方法中赋 值。
16. 指出下面出错的地方,为什么? a) class abc{ b) int age; c) String sname; d) static String classer; e) void setAge( age){ f) age=age; g) } h) static static void speak(){ i) System.out.println(“年龄:”+age+”;班 级:”+classer); j) } k) } 答案: (e)没有为传递进来的参数age定义一个int类型 (f)第一个age没有加this (h)多写了一个static (i)在静态的方法中不能调用非静态变量age 17. 源代码如下所示,你觉得程序能否通过编译呢,如果可以通过 编译输出的结果会是什么呢? public class TestOverLoad{ public static void main(String[] args){ Test test = new Test(); test.print(null); } } class Test{ public void print(String some){ System.out.println("String version print"); } public void print(Object some){ System.out.println("Object version print"); } } 答案: 能,输出String version print
18. 如果在上题中TestOverLoad类中再添加一个方法如下所示,这样 会如何呢? public class TestOverLoad{ public static void main(String[] args){ Test test = new Test(); test.print(null); } } class Test{ public void print(String some){ System.out.println("String version print"); } public void print(Object some){ System.out.println("Object version print"); } public void print(StringBuffer some){ System.out.println("StringBuffer version print"); } } 答案:应为实例化Test后传递的参数是null,系统就自动优先调用子类 的函数。而String和StringBuffer都是Object的子类,但是String和 StringBuffer二者没有任何继承关系。属于同一级,因此系统不知道调 用谁,所以报错。 19. 下面可否通过编译,为什么? public class A{ public int aMethod(String s){ System.out.println(s); return 1; } public void aMethod(String s){ System.out.println(s); } } 答案:出错,重载限定在传递参数的个数或者是类型不同,顺序不同, 但是这题是返回类型不同,方法一样,但是其参数相同,不符合重载的 要求,但是他们的方法名都一样,所以会出错。
D)Java不支持此特性 答案:C 5、 不使用static修饰符限定的方法称为实例成员方法,下列哪一 个说法是不正确的 A)成员方法可以直接调用父类的成员方法 B)成员方法可以直接调用父类的类方法 C)成员方法不可以直接调用其他类的成员方法 D)成员方法可以直接调用本类的类方法 答案: 6、 函数重载是指 A)两个或两个以上的函数取相同的函数名,但形参的个数或 类型不同 B)两个以上的函数取相同的名字和具有相同的参数个数,但 形参的类型可以不同 C)两个以上的函数名字不同,但形参的个数或类型相同 D)两个以上的函数取相同的函数名,并且函数的返回类型相 同 答案:A 7、 下述哪个说法是不正确的 A)局部变量在使用之前无需初始化,因为有该变量类型的默 认值 B)类成员变量由系统自动进行初始化,也无需初始化 C)参数的作用域就是所在的方法 D)for语句中定义的变量,当for语句执行完时,该变量就消 亡了 答案:A 8、 下列代码的执行结果是: public class Test6{ public static void main(String args[]){
四、上Hale Waihona Puke Baidu题
对应编号 1 2 3 4 详细要求 编写一个描述成绩的类; 编写一个描述学生的类; 编写一个描述圆形的类; 编写一个描述圆锥的类;
1、 详细要求 详细要求中,没有明确指明是 类变量或类方法; 一律定义为实例变量 或实例方法; 对应编号 详细要求 1. 编写名为: Score 类,用于描述成绩; 2. 有三门成绩:语文,外语,数学; 3. 要求三门成绩有相应的set和get方法;set用于 赋值;get用于获取值; [ 例如有变量 int abc;
相关文档
最新文档