收藏 分享(赏)

解析JAVA程序设计第三章课后答案.doc

上传人:dreamzhangning 文档编号:2703448 上传时间:2018-09-25 格式:DOC 页数:19 大小:76KB
下载 相关 举报
解析JAVA程序设计第三章课后答案.doc_第1页
第1页 / 共19页
解析JAVA程序设计第三章课后答案.doc_第2页
第2页 / 共19页
解析JAVA程序设计第三章课后答案.doc_第3页
第3页 / 共19页
解析JAVA程序设计第三章课后答案.doc_第4页
第4页 / 共19页
解析JAVA程序设计第三章课后答案.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、第 3 章习题解答1如何定义方法?在面向对象程序设计中方法有什么作用?答:方法的定义包括方法名、方法形参、方法的返回值类型和方法体四部分,方法只能在类中定义。方法是对象的动态特征的描述,对象通过方法操作属性,进而改变对象的状态,完成程序所预期的功能。2.定义一个 Dog 类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出 Dog 的信息。编写应用程序使用 Dog。答:public class Dogprivate String name;private String color;private String age;Dog(String n,String c,Str

2、ing 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 个:privat

3、e、protected、public,另外还有一种默认访问权限。各个修饰符的作用如下表所示:属性和方法 类 public 默认public A Bprotected B + C B默认 B Bprivate D DB:包中的类C:所有子类D:本类A:所有类B:包中的类C:所有子类D:本类A:所有类4阅读程序,写出程序的输出结果class Aprivate int privateVar;A(int _privateVar)privateVar=_privateVar;boolean isEqualTo(A anotherA)if(this.privateVar = anotherA.privat

4、eVar)return true;elsereturn false;public class Bpublic 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

5、(“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

6、) 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

7、.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

8、 x; 错误原因:构造方法不能有返回类型,也不能以 void 作为它的返回类型。10定义一个名字为 MyRectangle 的矩形类,类中有 4 个私有的整型成员变量,分别是矩形的左上角坐标(xUp,yUp)和右下角坐标(xDown,yDown);类中定义了无参数的构造方法和有4 个 int 参数的构造方法,用来初始化类对象。类中还有以下方法:getW() 计算矩形的宽度;getH() 计算矩形的高度;area() 计算矩形的面积;toString() 把矩形的宽、高和面积等信息作为一个字符串返回。编写应用程序使用 MyRectangle 类。答:public class MyRectangl

9、eprivate 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

10、“矩形宽:“ + 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 Stude

11、ntprivate String number, name;private boolean sex; /true 表示“男” ,false 表示“女”private int age;Student()number = “; ; sex = true; age = 0Student(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

12、 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如何定义静态成员变量

13、?静态成员变量有什么特点?静态方法有何特点?为什么有的时候需要定义静态方法?静态方法处理的成员变量有什么要求?答:在定义成员变量的时候前面加上 static 修饰符,该变量即成为静态成员变量,静态成员变量也称为类变量。类变量和实例变量的区别是,不管为类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量。因此,可以通过类本身或者某个对象来访问类变量。当定义一个方法的时候,使用 static 关键字说明该方法是类方法(静态方法)而不是实例方法。当第一次调用含类方法的类时,系统只为该类的类方法创建一个版本。这个版本被该类和该类的所有实例所共享。调用类方法时不需要实例

14、化类,因此对那些不想实例化的类,或者不需要实例化的类,但又需要调用该类的方法,这时就可以把该方法定义为类方法。类方法只能操作类变量,不能访问在类中定义的实例变量,同时,类方法可以在类中被调用,不必通过创建一个实例对象来调用一个类方法,当然也可以在实例对象中调用类方法。13使用静态成员变量来计算内存中的实例化的对象数目。public class Count private String name;private static int number = 0; /计数 Count 对象生成的个数Count() name = null;number+;Count(String n) name = n;

15、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.la

16、ng.System.gc(); System.out.println(“执行垃圾收集后 Item 对象的个数:“ + number);c1 = new Count();java.lang.System.gc(); System.out.println(“执行垃圾收集后 Item 对象的个数:“ + number); 14.定义一个计算矩形面积、立方体和球体体积的类。该类完成计算的方法用静态方法实现。public class Calculatepublic static double calculateRectangleArea(double height,double width)return

17、 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 个构造方法(没有参数、有一个参数给用户名赋值、有两个参数给用户名和口令赋值) 、获取和设置口令的方法、返回字符串表

18、示的类信息的方法(包含用户名、口令) 。编写应用程序测试 User 类。 答:class Userprivate 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() /密码全部以明文操作,没有使用加密算

19、法return password;public setPassword(String ps)password = ps;public String toString() return “用户名:“+ name +“口令:“+ password;public class TestUser usr = new User(“张三“, “123456“);usr.setPassword(“abcdef“);usr.toString();16定义一个 Company 类,成员变量有公司名称、雇员列表、公司每年的总收入。该类的构造方法可能有如下形式:public Company(String name)

20、也可以有更多其它形式的构造方法。或许还应该有如下方法:public void setName(String name) public String getName() 必须提供一个公共的 dump 方法来打印有关 Company 的信息,如公司名称、雇员和公司总收入。最后为 Company 类编写一个测试客户程序。答:class Companypublic String name; /公司名称public String employee; /雇员列表private int number; /雇员人数public double grossIncome; /总收入Company(String n)

21、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 r

22、emoveEmployee(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-; /雇员总数减 1public void dump()System.out.println(“公司名称:“+ name +“总收入:“+ grossIncome);Syste

23、m.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 类,该类有这样一些成员变量:课程号、课程名称、

24、授课教师、课程状态(必修或者选修) ,所有的成员变量都是私有的,并且有用于访问它们的公共 set/get 方法。最后为 Course 类编写一个测试程序。答:class Courseprivate 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

25、 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

26、实现一个 BankTransaction 类,允许用户进行如下操作:开帐号,取消帐号,把钱存到已经存在的帐号中,从已经存在的帐号中取钱,把钱从一个帐号转移到另一个帐号,要求打印出一个或多个已存在的帐号的报告。一个用户能开的帐号数不应该有上限,类还应该包含一个方法,如果一个帐号超支的话,这个方法自动给出一个警告。最后为 BankTransaction 类编写一个测试程序。答:class Count /首先定义帐号类private String id; /帐号 idprivate String name; /储户姓名private double total; /帐户余额Count(String i

27、, 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 B

28、ankTransaction/储户列表,虽然储户个数不应该有限制,但是为了方便,这里还是假设最多 100 个 private Count depositors100; private int number; /实际储户个数 public creatCount(String i,String n,double t) /创建一个帐户Count cnt = new Count(i, n, t);/每个帐户的 id 应该通过某种算法生成,以保证唯一性,/这里为了简化,直接指定帐户 iddepositorsnumber = cnt;number+;public removeCount(String id

29、n) /删除一个帐户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-; /实际储户总数减 1public double getMoney(String idn, double money) /取钱int i;for(i = 0;i number; i

30、+) /查找储户所在位置if(pareTo(depositorsi.getId() = 0) break; if(i number)if(money = depositorsi.getTotal() depositorsi.setTotal(depositorsi.getTotal() - money);return money;else System.out.println(“帐户余额不足“);else System.out.println(“用户不存在“);public void saveMoney(String idn, double money) /存钱int i;for(i = 0;

31、i number; i+) /查找储户所在位置if(pareTo(depositorsi.getId() = 0) break; if(i number)depositorsi.setTotal(depositorsi.getTotal() + money); else System.out.println(“用户不存在“);public void transferMoney(String id1, String id2, double money) /把帐户 1 的钱转到帐户 2int i,j;for(i = 0;i number; i+) /查找储户 1 所在位置if(pareTo(dep

32、ositorsi.getId() = 0) break; for(j = 0;j number; j+) /查找储户 2 所在位置if(pareTo(depositorsj.getId() = 0) break; if(i number depositorsj.setTotal(depositorsj.getTotal() + money);else System.out.println(“帐户余额不足,无法转帐“);else System.out.println(“至少有一个用户不存在“);19实现一个类 Bag。一个无序单位组(bag)就像一个集合,它允许元素的重复。类 Bag 必须有方法来插入和删除元素、测试 Bag 是否为空、得到 Bag 中的元素数、在 Bag 中搜索一个特定的元素。可以使用数组来模拟集合,虽然数组是有序的。元素类型假设为 String,当然也可以是更一般的类型。最后为 Bag 类编写一个测试客户程序。答:略

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报