1.编写一个学生类,提供name、age、gender、phone、address、cmail成员变量,且为每个成员变量提供 seter.geter方法。为学生类提供默认的构造器和带所有成员变量的构造器。为学生类提供方法,用于描绘吃、喝、玩、睡等行为。
疯狂java讲义第五章课后习题第1题答案

2.利用第1题定义的Student类,定义一个Studen]数组保存多个Student对象作为通讯录数据。程序可通过name、email、address查询,如果找不到数据,则进行友好提示。
疯狂java讲义第五章课后习题第2题答案

3.定义普通人、老师、班主任、学生、学校这些类,提供适当的成员变量、方法用于描述其内部数据和行为特征,并提供主类使之运行。要求有良好的封装性,将不同类放在不同的包下面,增加文档注释,生成API文档。

人类,用来继承的抽象类,不能创造实例

发现重写了OrdinaryPerson的equals后,他的子类其实就不用再重写equals了。
疯狂java讲义第五章课后习题第3题答案

4.改写第1题的程序,利用组合来实现类复用。
组合方式有点不好的就是,需要在组合的类中使用被组合的类的时候需要写一个空架子方法,里面再调用被组合类的方法,而继承方式就不需要这样子。总之,组合会稍微麻烦一点,但是has - a的时候还是要使用组合的方式

疯狂java讲义第五章课后习题第4题答案

5.定义交通工具、汽车、火车、飞机这些类,注意它们的继承关系,为这些类提供超过3个不同的构造器,并通过实例初始化块提取构造器中的通用代码。

疯狂java讲义第五章课后习题第5题答案

补充习题
1、显式使用this调用当前对象的成员变量和方法。

可不可以在子类用this调用父类的方法或者变量:和super的效果完全相同,目前知道的区别是super.方法调用的是父类被重写的原本的方法。其他的区别还不知道

疯狂java讲义第五章补充习题第1题答案

2、在static修饰的方法中新建对象,调用非static成员变量和方法。
其实补充的第一题也包含了相同的概念。

3、试着声明一个static int类型的类变量,并创建两个对象,两个对象先打印这个类变量进行查看,然后用类名将类变量增加10,最后两个对象再次打印查看。
这里的答案和题目有一点区别,但是神似。
疯狂java讲义第五章补充习题第2题答案

4、在构造器中使用this,理解在构造器中this.代表正在初始化的变量。

疯狂java讲义第五章补充习题第4题答案

5、创建一个类,提供一个return this;方法,多次调用这个方法。
对上面的One进行扩展完成这题

疯狂java讲义第五章补充习题第5题答案

6、创建一个对象提供swap方法,和test方法,test传入两个基本数据类型参数和一个引用类型参数,分别对它们进行swap,并查看结果。

疯狂java讲义第五章补充习题第6题答案

7、尝试使用String…name这种不定数量的参数,并使用数组,直接传入,不传入参数进行调用。尝试不将String…name作为方法的最后一个参数,查看会报什么错误。

传入数组的话,不能直接用静态的方法,也就是不能{}只是两个花括号,要以这种格式,new int[] {} ,这里说的格式是直接传入的方式,变量的话就没这样的要求了。

不放在最后一个位置的话,会直接和你说

疯狂java讲义第五章补充习题第7题答案

8、(1)创建一个类,在类中声明类初始化块,并在其中打印字符串,再在实例初始化块和构造器中做相同操作,进行new多个实例,看看输出如何。比如做出四代继承,然后只是创造最小的那个辈分的类的实例,看看输出,都包括静态初始化块,实例初始化块,和构造器;

(2)强化:创建这个类的子类,同样操作,并new多个实例,这个子类有多个构造器,有参数构造器通过this()调用这个子类的无参数构造器。
当我想要既通过super调用父类的有参数构造器,又想要看看this()调用本类的无参数构造器,看看是不是也会调用到父类构造器的时候,发现,就遇到了super和this的冲突,所幸结果是确定的,调用本类的无参数构造器,也会调用父类的无参数构造器。只有在方法中调用了super才会调用对应的有参数构造器
疯狂java讲义第五章补充习题第8题答案

9、创建一个类,将this()不放在构造器的第一行,查看报错,将super()不放在第一行查看报错。
是编译错误

10、
疯狂java讲义第五章补充习题第10题答案

11、当你想让一个子类同时继承两个父类时,尝试采取间接继承方案,并使用查看效果。
第一种方案,间接继承
疯狂java讲义第五章补充习题第11题答案

12、子类覆盖父类的方法,尝试让子类方法的返回值类型大于父类,同样的操作用于抛出异常、方法访问权限上。
疯狂java讲义第五章补充习题第12题答案

13、子类用类方法覆盖父类的实例方法,也操作一下,子类用实例方法覆盖父类的类方法和子类实例方法覆盖父类实例方法,子类类方法覆盖父类类方法。
疯狂java讲义第五章补充习题第13题答案

14、使用子类重载父类的方法。
疯狂java讲义第五章补充习题第14题答案

15、使用多态的类的方法和变量,查看是父类还是子类的方法和变量。在调用子类的扩展方法。使用instanceof+强制类型转换后再试试查看结果。
疯狂java讲义第五章补充习题第15题答案

16、使用子类尝试越过父类的setAge方法的检查,将年龄设置为10000。
由于为了具有良好的封装,那么age只能用private修饰,所以报错也只能如下情况

17、定义一个抽象类,再把他的子类实例赋给用抽象类声明的变量,看看能不能调用子类重写的抽象方法,并且看看效果,
疯狂java讲义第五章补充习题第17题答案

18、尝试给一个方法多个不定数量的参数
报错如下

然后经过测试,声明这种不定数量的参数,只需要 type … name,就是按照顺序包含这三个东西就好了,空格不影响

19、尝试用void声明构造器,
创建对象的时候,没有反应,但是可以当成方法调用


public class Test
{public void Test(){System.out.println("你好,旅行者!");}public static void main(String[] args)   {Test test = new Test();test.Test();}}

所以这么写的话,其实就是写了一个方法。

20、尝试在实例内部用实例名称.方法,或者.变量,来看看能不能调用

不能,

21、尝试写一个递归方法,就拿斐波那契数列来吧


public class Test
{public int fib(int a){if(a == 1 || a == 2)return 1;if(a==0)return 0;return fib(a-1)+fib(a-2);}public static void main(String[] args)    {Test test = new Test();System.out.println(test.fib(7));}}

22、尝试重载一个方法。


public class Test
{public static void main(String[] args) {One one = new One();one.fly();one.fly("变身");}}class One
{public void fly(){System.out.println("我在飞,飞的很慢");}public String fly(String name){System.out.println("我变成了老鹰,飞的非常快!");return "老鹰的速度";}
}

返回值根本不影响

23、声明一个Person的引用变量但不创建,,看看会不会调用类初始化块。或者初始化类变量

不会,只是声明引用变量并不会触发类的初始化,所以只有第一次创建一个对象才会触发,需要创建,而不能只是声明一个引用变量。

24、尝试声明一个局部变量,但不显式初始化,然后打印,
结果

给基础变量类型设置为null试一试


public class Test
{public static void main(String[] args) {One one = new One();}}class One
{public void fly(){int a;a = 1;System.out.println(a+"");}
}

25、在方法中写一个和实例变量名字相同的局部变量,这个实例变量的名称和一个类变量相同,然后尝试用this调用,和类名.调用
一个类中并不能声明同名的实例变量和类变量


public class Test
{public static void main(String[] args) {One one = new One();one.fly();}}class One
{public static String name = "哈哈";public String name2 = "卧槽";public void fly(){String name2 = "super~!!";System.out.println(this.name2);}
}

26、尝试写一个封装的比较好的get和set方法
这里写一个Person类,有一个年龄实例变量,和它的set和get方法,
其实主要是set方法需要限制


public class Test
{public static void main(String[] args) {Person person = new Person();person.setAge(13);System.out.println("person的年龄:"+person.getAge());person.setAge(1999);}}class Person
{private int age;public void setAge(int age){if(age >=0 && age <=100)this.age =age;elseSystem.out.println("你输入的年龄太离谱,不能设置!");  }public int getAge(){return age;}
}

27、使用import static导入静态方法和静态变量,并使用System和Math
我懂了,import只能导入类,而import static 可以导入类方法和类变量。
如果是import的话,只能通过创建对象,或者类名的方式来调用类方法和类变量
import static 则完全可以直接使用,就好像是在自己的类中一样。

28、尝试private父类实例方法,子类重写为类方法。然后public父类实例方法,再看看会报什么错。
在private父类方法的情况下,子类可以将父类方法重写为类方法,这样说其实不对,应该说,子类能写一个和父类private方法名称相同的类方法,不会受到父类影响。

29、创建子类,打印子类变量,再向上转型为父类,再打印一下子类变量

疯狂java讲义第五章补充习题第29题答案

疯狂java讲义第五章课后习题答案相关推荐

  1. 《Python语言程序设计》王恺 机械工业出版社 第五章课后习题答案

    第五章 序列.集合和字典 5.8 课后习题 (1)Python 中,通过列表中的 index 方法可以根据指定值查找第一个匹配的列表元素 的位置. (2)Python 中,通过列表中的 insert ...

  2. 材料力学Ⅰ(第六版)第五章课后习题答案

    第一章 绪论 第二章 拉伸.压缩与剪切 第三章 扭转 第四章 弯曲内力 第五章 弯曲应力 第六章 弯曲变形 第七章 应力和应变分析强度理论 第八章 组合变形 第九章 压杆稳定

  3. 疯狂java讲义第七章补充习题第12题答案

    12.使用Calendar的各种方法 变量 ALL_STYLES AM AM_PM APRIL areFieldsSet AUGUST DECEMBER DST_OFFSET ERA FEBRUARY ...

  4. java疯狂讲义第四版第五章答案_疯狂java讲义第五章笔记

    1 定义类,成员变量和方法 类和对象 定义类 java的类名由一个或者多个有意义的单词组合而成,每个单词的首字母大写,其他的全部消协,并且单词之间没有分隔符. 成员变量:用于定义该类或者实例的所包含的 ...

  5. 疯狂java讲义第六章课后第4题答案

    4.定义一个类,该类用于封装一桌梭哈游戏,这个类应该包含桌上剩下的牌的信息,并包含5个玩家的状态信息:他们各自的位置.游戏状态(正在游戏或已放弃).手上已有的牌等信息.如果有可能,这个类还应该实现发牌 ...

  6. Java面向对象程序设计(第二版)袁绍欣 第十五章课后习题答案

    5.利用URLConnetction对象编写程序返回某网站的首页,并将首页的内容存放到文件当中. import java.io.*; import java.net.*;public class ht ...

  7. 操作系统第五章课后习题答案

    第一题 1 ,旋转型设备上信息的优化分布能减少为若干个拍服务的总时间.设磁鼓上分为20 V 个区,每区存放一个记录,磁鼓旋转一周需20 毫秒,读出每个记录平均需用1 毫秒,读出后经2 毫秒处理,再继续 ...

  8. 【最详细】数据结构(C语言版 第2版)第五章课后习题答案 严蔚敏 等 编著

    所有章节答案合集-->传送门 1.选择题 ( 1)把一棵树转换为二叉树后,这棵二叉树的形态是() . A.唯一的 B.有多种 C.有多种,但根结点都没有左孩子 D.有多种,但根结点都没有右孩子 ...

  9. 《工程伦理》网课第五章课后习题答案

最新文章

  1. Android界面编程--使用活动条(ActionBar)--通过ActionBar菜单改变TextView的字体和颜色...
  2. spring aop实现日志收集
  3. 趣学 C 语言(十三)—— 标准输入输出重定向
  4. 关于连接参数-Ttext
  5. Python爬虫学习,记一次抓包获取js,从js函数中取数据的过程
  6. 如何设置CentOS7的时间与网络同步
  7. matlab里面计算相关系系数的显著性,数学建模笔记——相关系数
  8. 如何下载安装fireBug
  9. 南京大学计算机学类,南京大学计算机专业怎么样
  10. 先旋转x在旋转y 在旋转z_旋转Kubernetes中的秘密
  11. poj4001 Xiangqi
  12. mysql password_expired
  13. 信息化15年规划推动中国信息化步入深水区
  14. 洛谷P1548 [NOIP1997 普及组] 棋盘问题
  15. 中科院基于gpt的学术优化网站搭建教程
  16. KV260(一)跑通相机例程
  17. 批处理文件写法(转帖)
  18. python 画不同形状的曲线
  19. Mavenir推出智能物联网平台以实现更智能的分析
  20. 前程无忧将办海外留学生招聘会;中兴任命倪飞为终端事业部总裁 | 美通企业日报...

热门文章

  1. 投屏协议以及投屏的测试点
  2. 2017湘潭大学邀请赛H题(树的直径)
  3. 爬虫之哔哩哔哩弹幕的获取
  4. 【babylonjs】环形屏幕3d展示
  5. 华为软开云8--发布
  6. strcmp,stricmp,strcmpi的区别
  7. pydicom读取头文件_pydicom读取压缩格式的DICOM图像报错的解决方案
  8. Android Studio自带模拟器打不开,一直停留在带有Android的页面
  9. 8086CPU指令系统——控制转移类指令
  10. matlab实现振动弹簧的实时动画,CSS如何实现弹簧动画效果