一、知识点(必做):

1. Student.java

需求:定义一个符合JavaBean规范的学生类(name, age)并使用this关键字

作业目的:掌握this的使用,通过this解决变量的二义性

  1. package task1;
  2. public class Student {
  3. /**
  4. * ### 1. Student.java
  5. * 需求:定义一个符合JavaBean规范的学生类(name, age)并使用this关键字
  6. * 作业目的:掌握this的使用,通过**this解决变量的二义性**
  7. *
  8. * @param args
  9. */
  10. // 定义一个符合JavaBean规范的学生类(name, age)
  11. private String name;
  12. private int age;
  13. public String getName() {
  14. return name;
  15. }
  16. // 并使用this关键字
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. // 并使用this关键字
  24. public int getAge() {
  25. return age;
  26. }
  27. public Student() {
  28. }
  29. void mes() {
  30. System.out.println(name + " " + age);
  31. }
  32. public static void main(String[] args) {
  33. Student stu = new Student();
  34. stu.mes();
  35. }
  36. }
  37. 总结:弄清楚this关键字作用点和javabean语法

2.ExtendDemo.java(重点)

需求:使用面向对象的知识定义出老师(Teacher)、学生(Student)、员工(Employee)三个类, 抽取出三者的共同父类Person

  • 老师:拥有名字、年龄、级别三个状态,有授课和休息两个功能

  • 学生:拥有名字、年龄、学好三个状态,有学习和休息两个功能

  • 员工:拥有名字、年龄、入职时间三个状态,有工作和休息两个功能

作业目的:掌握继承语法

  1. package task2;
  2. public class Employee extends Person {
  3. /**
  4. * ### ExtendDemo.java(重点)
  5. * 需求:使用面向对象的知识定义出老师(Teacher)、学生(Student)、
  6. * 员工(Employee)三个类, 抽取出三者的共同父类Person
  7. * - 老师:拥有名字、年龄、级别三个状态,有授课和休息两个功能
  8. * - 学生:拥有名字、年龄、学好三个状态,有学习和休息两个功能
  9. * - 员工:拥有名字、年龄、入职时间三个状态,有工作和休息两个功能
  10. * 作业目的:**掌握继承语法**
  11. * @param
  12. */
  13. private int date;
  14. private Person person;
  15. public Employee(){}
  16. public int getDate() {
  17. return date;
  18. }
  19. public void setDate(int date) {
  20. this.date = date;
  21. }
  22. void work(){
  23. System.out.println("工作");
  24. }
  25. }
  26. package task2;
  27. public class ExtendDemo {
  28. public static void main(String[] args) {
  29. Employee employee = new Employee();
  30. Teacher teacher = new Teacher();
  31. Student student =new Student();
  32. employee.setAge(21);
  33. employee.setName("bata");
  34. employee.getDate();
  35. employee.rest();
  36. employee.work();
  37. teacher.setLevel(1);
  38. teacher.setAge(43);
  39. teacher.setName("arfar");
  40. teacher.rest();
  41. teacher.teach();
  42. student.setName("朱可夫");
  43. student.setAge(11);
  44. student.setHobby("光域");
  45. student.rest();
  46. student.Study();
  47. }
  48. }
  49. package task2;
  50. public class Person {
  51. String name;
  52. int age;
  53. public String getName() {
  54. return name;
  55. }
  56. public void setName(String name) {
  57. this.name = name;
  58. }
  59. public int getAge() {
  60. return age;
  61. }
  62. public void setAge(int age) {
  63. if (age <0) {
  64. System.out.println("不合理");
  65. }else{this.age = age;}
  66. }
  67. public Person() {
  68. }
  69. void rest() {
  70. System.out.println("休息");
  71. }
  72. }
  73. package task2;
  74. public class Student extends Person{
  75. private String hobby;
  76. public String getHobby() {
  77. return hobby;
  78. }
  79. public void setHobby(String hobby) {
  80. this.hobby = hobby;
  81. }
  82. public Student(){
  83. }
  84. void Study(){
  85. System.out.println("学习");
  86. }
  87. }
  88. package task2;
  89. public class Teacher extends Person {
  90. private int level;
  91. public int getLevel() {
  92. return level;
  93. }
  94. public void setLevel(int level) {
  95. this.level = level;
  96. }
  97. public Teacher(){}
  98. void teach(){
  99. System.out.println("授课");
  100. }
  101. }

3.OverrideDemo.java(重点)

需求:演示方法覆盖

  • 父类鸟类(Bird),鸟类中含有飞翔(fly)行为

  • 鸟的子类鸵鸟类(Ostrich),子类中覆盖父类飞翔(fly)方法

作业目的:掌握方法覆盖的作用和写法

4.AbstractDemo.java(重点)

需求:分别求出圆形和矩形的面积

  • 矩形(Rectangle):求出矩形的面积

  • 圆形(Circle):求出圆形的面积

  • 图形(AbstractGraph):表示求形状面积的抽象类,里面包含求面积的抽象方法,其他子类必须覆盖此方法

要求:先写没有继承抽象类的情况,再根据类抽取出抽象类,并且必须测试

作业目的:引出抽象类和抽象方法

5.AbstractDemo2.java

需求:演示抽象类特点

  • 抽象类不能创建对象,调用没有方法体的抽象方法没有任何意义

  • 抽象类中可以同时拥有抽象方法和普通方法

  • 抽象类要有子类才有意义,子类必须覆盖父类的抽象方法,否则子类也得作为抽象类

作业目的:掌握抽象类的定义和特点

6.ObjectDemo.java (预习题)

需求:演示Object类中的toString和equals方法

  • 创建一个Person类,通过覆盖toString方法,打印Person对象的内容

  • 使用和equals比较两个Person对象,通过结果得到和equals的区别

作业目的:

掌握Object类中的toString方法和equals方法

掌握==和equals的区别

二、综合练习(必做):

1. 按要求代码实现:

徒弟(Prentice):父类

孙悟空

  1. 字段:nameage,武器(weapon),紧箍咒(formula)
  2. 方法:吃斋(doMaigre),念佛(buddha),取经(doPilgrimage),战斗(fight), 降妖 (extDevil)

猪八戒

  1. 字段:nameage,武器,媳妇(wife),
  2. 方法,念佛,取经,战斗, 牵马 holding horses ---> (holdHorse)

沙和尚

  1. 字段:nameage,武器, 流沙河(sandRiver),
  2. 方法:念佛,取经,战斗, 挑行李 Pick up the luggage --> pickUpLuge

要求:

1、分析上面信息,代码优化(用到知识点:1、this 2、super 3、javabean 4、继承)。

2、写测试类 Test测试

3、添加一定的剧情(随意发挥)。

2. 需求: 定义商品类, 并封装商品对象

商品类: Item

具有成员变量,:

  1. 编号(code) String类型 商品编号
  2. 名称(name) String 类型 商品名称
  3. 类别(type) String 类型 商品的具体类别
  4. 价格(price) double 类型 商品的价格

1)提供两个构造器

  1. 没有参数的构造器
  2. 创建一个以编号(code),名称(name) 作为形式参数的构造器

2)编写一个main方法,添加一个商品,其商品信息如下

创建两个笔记本电脑的商品(computer),

商品1:

编号(code):666

名称: 戴尔(DELL) 游戏笔记本

类型: 游戏

价格: 5499.00


商品2:

编号(code):007

名称: 苹果(Macbook pro)笔记本

类型: 电脑,办公

价格: 18000.00

在main方法打印商品的基本信息

三、拓展练习(选做)

1. User类

定义一个网络用户类(User),包含用户ID(id)、用户密码(password)、email地址(emailAdrr)三个私有化成员变量,

请定义一个含有用户ID(id)、用户密码(password)两个参数的构造器

完成三个实例成员变量的初始化,其中email地址(emailAdrr)是用户ID加上字符串”@gameschool.com”

定义一个成员方法 showInfo,用于输出用户的基本信息

请利用上述构造器,在main方法中实例化网络用户类对象并打印用户基本信息。