




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章习题解答1如何定义方法?在面向对象程序设计中方法有什么作用?答:方法的定义包括方法名、方法形参、方法的返回值类型和方法体四部分,方法只能在类中定义。方法是对象的动态特征的描述,对象通过方法操作属性,进而改变对象的状态,完成程序所预期的功能。2.定义一个Dog类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。编写应用程序使用Dog。答:public class Dogprivate String name;private String color;private String age;Dog(String n,String c,String a)name = n; color = c; age = a;public String toString() return name + , + color + , + age;public static void main(String args) Dog dog = new Dog(小白, 白色, 2岁);System.out.println(dog.toString();3什么是访问控制修饰符?修饰符有哪些种类?它们各有何作用? 答:访问控制修饰符是对类、属性和方法的访问权限的一种限制,不同的修饰符决定了不同的访问权限。访问控制修饰符有3个:private、protected、public,另外还有一种默认访问权限。各个修饰符的作用如下表所示:属性和方法 类public默认publicABprotectedB + CB默认BBprivateDDB:包中的类C:所有子类D:本类A:所有类B:包中的类C:所有子类D:本类A:所有类4阅读程序,写出程序的输出结果class A private int privateVar; A(int _privateVar) privateVar=_privateVar;boolean isEqualTo(A anotherA) if(this.privateVar = anotherA.privateVar) return true; else return false; public class B public static void main(String args) A a = new A(1); A b = new A(2); System.out.println(a.isEqualTo(b);程序的输出结果为: false5阅读程序,写出程序的输出结果public class Test public static void main(String args) int x;int a = 0, 0, 0, 0, 0, 0 ;calculate(a, a5);System.out.println(the value of a0 is + a0);System.out.println(the value is a5 is + a5);static int calculate(int x, int y) for (int i = 1; i x.length; i+)if (y x.length)xi = xi - 1 + 1;return x0;程序的输出结果为:the value of a0 is 0the value is a5 is 56阅读程序,写出程序的输出结果public class Test public static void main(String args) String str1 = new String(Java);String str2 = new String(Java);System.out.println(str1 = str2);程序的输出结果为:false7阅读下列程序,程序中已经指明错误位置,请说出错误原因。1package sample;class A private int num;A()num=0;int get() return num; class Z public static void main(String args) A a1 = new A();int t = a1.get();int s = a1.num; /此处有错误错误原因:私有变量只能在其所在类中直接使用,在其它类中不可以直接使用。8阅读下列程序,程序中已经指明错误位置,请说出错误原因。其中,方法m的功能是把形参的值赋给类的成员变量x。class Alphaprivate int x;public void m(int x)x = x; /此处有错误应该修改为:this.x = x;9下面定义了一个完整的类,包括有构造方法。阅读这段程序,程序中已经指明错误位置,请说出错误原因。class Alphaprivate int x;void Alpha() /此处有错误x = 0;public void getX()return x; 错误原因:构造方法不能有返回类型,也不能以void作为它的返回类型。10定义一个名字为MyRectangle的矩形类,类中有4个私有的整型成员变量,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义了无参数的构造方法和有4个int参数的构造方法,用来初始化类对象。类中还有以下方法:getW() 计算矩形的宽度;getH() 计算矩形的高度;area() 计算矩形的面积;toString() 把矩形的宽、高和面积等信息作为一个字符串返回。编写应用程序使用MyRectangle类。答:public class MyRectangleprivate int xUp,yUp,xDown,yDown;MyRectangle()xUp = 0; yUp = 0; xDown = 0; yDown = 0;MyRectangle(x1, y1, x2, y2 )xUp = x1; yUp = y1; xDown = x2; yDown = y2;public int getW()return xDown - xUp;public int getH()return yDown - yUp;public int area()return getW() * getH();public String toString() return 矩形宽: + getW() +矩形高: + getH() + 矩形面积:+area();public static void main(String args) MyRectangle rectangle = new MyRectangle(1,2,7,8);System.out.println(rectangle.toString();11定义一个表示学生的类Student,包括的成员变量有:学号、姓名、性别、年龄;成员方法有:获得学号、姓名、性别、年龄;修改年龄。并书写Java程序创建Student类的对象及测试其方法的功能。 答:public class Student private String number, name;private boolean sex; /true表示“男”,false表示“女”private int age; Student() number = ; ; sex = true; age = 0 Student(String num, String na, boolean s, int a) number = num; sex = s; age = a; public String getNumber() return number; public String getName() return name; public boolean getSex() return sex; public int getAge() return age; public void setAge(int a) age = a; public String toString() return 学号:+ number +姓名:+ name +性别:+ sex +年龄:+ age; public static void main(String args) Student stu =new Student(200601012,张三,true,20); System.out.println(stu.toString(); 12如何定义静态成员变量?静态成员变量有什么特点?静态方法有何特点?为什么有的时候需要定义静态方法?静态方法处理的成员变量有什么要求?答:在定义成员变量的时候前面加上static修饰符,该变量即成为静态成员变量,静态成员变量也称为类变量。类变量和实例变量的区别是,不管为类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量。因此,可以通过类本身或者某个对象来访问类变量。当定义一个方法的时候,使用static关键字说明该方法是类方法(静态方法)而不是实例方法。当第一次调用含类方法的类时,系统只为该类的类方法创建一个版本。这个版本被该类和该类的所有实例所共享。调用类方法时不需要实例化类,因此对那些不想实例化的类,或者不需要实例化的类,但又需要调用该类的方法,这时就可以把该方法定义为类方法。类方法只能操作类变量,不能访问在类中定义的实例变量,同时,类方法可以在类中被调用,不必通过创建一个实例对象来调用一个类方法,当然也可以在实例对象中调用类方法。 13使用静态成员变量来计算内存中的实例化的对象数目。public class Count private String name; private static int number = 0; /计数Count对象生成的个数 Count() name = null; number+; Count(String n) name = n; number+; protected void finalize() /当有一个Count对象释放时会执行该方法,此时对number减1System.out.println(有一个Item对象释放了);number-; public static void main(String args) Count c1 = new Count(); Count c2 = new Count(); c1 = null; System.out.println(执行垃圾收集前Item对象的个数: + number);/强制执行垃圾收集,观察Count类中number值的变化 java.lang.System.gc(); System.out.println(执行垃圾收集后Item对象的个数: + number); c1 = new Count();java.lang.System.gc(); System.out.println(执行垃圾收集后Item对象的个数: + number); 14.定义一个计算矩形面积、立方体和球体体积的类。该类完成计算的方法用静态方法实现。public class Calculate public static double calculateRectangleArea(double height,double width) return height * width ; public static double calculateCubeVol(double x, double y, double z) return x * y * z; public static double calculateSphereVol(double r) return (4/3) * 3.14 * r * r * r; 15.设计一个表示用户的User类,类中的变量有用户名、口令(私有的)和记录用户个数的变量(静态的),定义类的3个构造方法(没有参数、有一个参数给用户名赋值、有两个参数给用户名和口令赋值)、获取和设置口令的方法、返回字符串表示的类信息的方法(包含用户名、口令)。编写应用程序测试User类。 答:class User private String name, password; private static int number; User() name = null;password = null;n umber+; User(String n) name = n; password = null; number+; User(String n, String ps) name = n; password = ps; nmuber+ public String getPassword() /密码全部以明文操作,没有使用加密算法 return password; public setPassword(String ps) password = ps; public String toString() return 用户名:+ name +口令:+ password;public class Test User usr = new User(张三, 123456); usr.setPassword(abcdef); usr.toString(); 16定义一个Company类,成员变量有公司名称、雇员列表、公司每年的总收入。该类的构造方法可能有如下形式:public Company(String name) 也可以有更多其它形式的构造方法。或许还应该有如下方法:public void setName(String name) public String getName() 必须提供一个公共的dump方法来打印有关Company的信息,如公司名称、雇员和公司总收入。最后为Company类编写一个测试客户程序。答:class Company public String name; /公司名称 public String employee; /雇员列表 private int number; /雇员人数 public double grossIncome; /总收入 Company(String n) name = n; employee = new String100;/假设雇员人数不超过100人 public void setName(String n) name = n;public String getName() return name;public void setGrossIncome(double income) grossIncome = income; public String getGrossIncome() return grossIncome;public addEmployee(String n) employeenumber = n; number+;public removeEmployee(String n) int i; for(i = 0;i number; i+) /查找待删除雇员所在位置 if(employeei. compareTo(n) = 0) break;if(i number) employeei = null; /删除该雇员信息 for( ; i number ;i+) /被删除雇员后面的雇员向前移动一个位置 employeei = employeei+1;number-; /雇员总数减1 public void dump() System.out.println(公司名称:+ name +总收入:+ grossIncome); System.out.println(雇员列表:); for(int i=0; i number; i+) System.out.println(employeei); public class Testpublic static void main(String args) Company com = new Company(Sun Microsystem); com.addEmployee(张三); com.addEmployee(李四); com.setGrossIncome(123456789); com.dump();17定义一个Course类,该类有这样一些成员变量:课程号、课程名称、授课教师、课程状态(必修或者选修),所有的成员变量都是私有的,并且有用于访问它们的公共set/get方法。最后为Course类编写一个测试程序。答:class Course private String id,courseName,teacher,state; Course(String i,String c,String t,String s) id = i; courseName = c; teacher = t; state = s; public void setTeacher(String t) teacher = t;public String getTeacher() return teacher; public void setState(String s) state = s;public String getState() return state;/其他的方法可类似定义 public String toString() return id + courseName + teacher + state;public class Testpublic static void main(String args) Course course = new Course(010123,面向对象程序设计_Java,甘玲,限选); course.toString(); 18实现一个BankTransaction类,允许用户进行如下操作:开帐号,取消帐号,把钱存到已经存在的帐号中,从已经存在的帐号中取钱,把钱从一个帐号转移到另一个帐号,要求打印出一个或多个已存在的帐号的报告。一个用户能开的帐号数不应该有上限,类还应该包含一个方法,如果一个帐号超支的话,这个方法自动给出一个警告。最后为BankTransaction类编写一个测试程序。答:class Count /首先定义帐号类 private String id; /帐号id private String name; /储户姓名 private double total; /帐户余额 Count(String i, String n, double t) id = i; total =t;public String getId() return id;public void setId(String i) id = ipublic String getName() return name;public void setName(String n) name = n public double getTotal() return total;public void setTotal(double t) if(t 0 ) System.out.println(金额错误); else total = t;class BankTransaction/储户列表,虽然储户个数不应该有限制,但是为了方便,这里还是假设最多100个 private Count depositors100; private int number; /实际储户个数 public creatCount(String i,String n,double t) /创建一个帐户 Count cnt = new Count(i, n, t); /每个帐户的id应该通过某种算法生成,以保证唯一性,/这里为了简化,直接指定帐户id depositorsnumber = cnt; number+; public removeCount(String idn) /删除一个帐户 int i; for(i = 0;i number; i+) /查找待删除储户所在位置 if(pareTo(depositorsi.getId() = 0) break; if(i number) depositorsi = null; /删除该储户信息 for( ; i number ;i+) /被删除储户后面的储户向前移动一个位置 depositorsi = depositorsi+1;number-; /实际储户总数减1 public double getMoney(String idn, double money) /取钱 int i; for(i = 0;i number; i+) /查找储户所在位置 if(pareTo(depositorsi.getId() = 0) break; if(i number) if(money = depositorsi.getTotal() depositorsi.setTotal(depositorsi.getTotal()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑行业资深工程师面试指南及热点预测题详解
- 法律知识培训中学生民法典主题班会动态模板
- 2022年采购主任中层岗位竞聘培训
- 傣家竹楼教学课件
- 动画教学课件制作
- 新解读《GB-T 36761-2018工业用乙二胺》
- 甘肃省兰州市第五十八中学2024-2025学年高一下学期期末物理试卷(含答案)
- 2024-2025学年上海市松江九峰实验学校八年级(下)3月月考数学试卷(含答案)
- 新解读《GB-T 28827.1-2022信息技术服务 运行维护 第1部分:通 用要求》
- 新解读《GB-T 6374-2018凿岩机械与气动工具 尾柄和衬套配合尺寸》
- DB11-T1834-2021 城市道路工程施工技术规程高清最新版
- 穴位敷贴中医护理技术操作规范
- 冷却塔投标文件
- 手工电弧焊焊接头基本形式与尺寸
- 青年教师专业成长课题结题报告
- 农村公路安全生命防护工程施工方案
- 开拓进取:零碳汽车的材料脱碳之路
- (完整版)自我护理能力量表ESCA
- M2激光模式测量
- 网吧企业章程范本
- 充电站竣工报告(施工单位)
评论
0/150
提交评论