1 / 21

第二章

第二章. 学生信息管理系统中类的定义. 本章目标. 掌握如何定义类; 掌握创建类的对象; 掌握构造方法的使用; 掌握类的方法定义; 掌握方法的重载; 熟悉成员的访问控制; 理解封装的作用。. 学习情境 2-4. 学生类中的构造方法. 类的构造方法. 教学目标: 掌握构造方法的定义和功能 教学重点: 构造方法的定义 教学难点: 构造方法的重载 教学课时: 4 学时. 工作任务. 在其中添加两个构造方法,一个不带任何参数,一个带四个参数,并在测试类中分别利用这两个构造方法完成实例化两个对象。.

dasan
Télécharger la présentation

第二章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 学生信息管理系统中类的定义

  2. 本章目标 • 掌握如何定义类; • 掌握创建类的对象; • 掌握构造方法的使用; • 掌握类的方法定义; • 掌握方法的重载; • 熟悉成员的访问控制; • 理解封装的作用。

  3. 学习情境2-4 学生类中的构造方法

  4. 类的构造方法 • 教学目标: • 掌握构造方法的定义和功能 • 教学重点: • 构造方法的定义 • 教学难点: • 构造方法的重载 • 教学课时:4学时

  5. 工作任务 • 在其中添加两个构造方法,一个不带任何参数,一个带四个参数,并在测试类中分别利用这两个构造方法完成实例化两个对象。

  6. (1)在Student类中添加一个无参构造方法,并为各个属性赋上一个初始值,如下所示。(1)在Student类中添加一个无参构造方法,并为各个属性赋上一个初始值,如下所示。 public Student( ) { super(); this.num = 13002; this.name = "李四"; this.java = 77; this.dataBase = 79; }

  7. (2)另外再在Student类中添加一个带四个参数的有参构造方法,四个属性的数值,有构造方法的参数传递赋值。如下所示。(2)另外再在Student类中添加一个带四个参数的有参构造方法,四个属性的数值,有构造方法的参数传递赋值。如下所示。 public Student(int num, String name, double java, double dataBase) { super(); this.num = num; this.name = name; this.java = java; this.dataBase = dataBase; }

  8. (3)修改测试类,分别利用上述两个构造方法完成两个对象的示例化工作,并将它们的信息输出在控制台上,如下所示。(3)修改测试类,分别利用上述两个构造方法完成两个对象的示例化工作,并将它们的信息输出在控制台上,如下所示。 Student stuOne = new Student(); Student stuTwo = new Student(13003, "王五", 88, 87); System.out.println("第一个学生对象的信息如下:"); System.out.println(stuOne.toString()); System.out.print(stuOne.getName()+"的总成绩为:"); System.out.println(stuOne.sum(stuOne.getJava(), stuOne.getDataBase())); System.out.println("第二个学生对象的信息如下:"); System.out.println(stuTwo.toString()); System.out.print(stuTwo.getName()+"的总成绩为:"); System.out.println(stuTwo.sum(stuTwo.getJava(), stuTwo.getDataBase()));

  9. (4)运行测试类得到的结果如下所示。 第一个学生对象的信息如下: Student [num=13002, name=李四, java=77.0, dataBase=79.0] 李四的总成绩为:156.0 第二个学生对象的信息如下: Student [num=13003, name=王五, java=88.0, dataBase=87.0] 王五的总成绩为:175.0

  10. 2.3.3构造方法 在 Java 程序里,构造方法所完成的主要工作是帮助新创建的对象赋初值。构造方法可视为一种特殊的方法,它的定义方式与普通方法类似,其语法如下所示。 【格式 构造方法】 class 类名称 { 访问权限 类名(类型1 参数1, 类型2 参数2,…) { 程序语句; ……//构造方法没有返回之后 } }

  11. 【例2-9】下面用Animal类来说明构造方法的使用。【例2-9】下面用Animal类来说明构造方法的使用。 publicclass Animal { private String type = ""; // Animal构造方法 public Animal() { System.out.println("Animal类的构造方法"); } public String getType() { return type; } publicvoid setType(String type) { this.type = type; } public String toString() { return "Animal [type=" + type + "]"; } publicvoid sound() { System.out.println(type+"发出了吼叫……"); } publicvoid run() { sound(); System.out.println("正以每小时65千米的速度奔跑……"); } }

  12. AnimalTest测试类如下: publicclass AnimalTest { publicstaticvoid main(String[] args) { Animal a = new Animal(); a.setType("斑马"); a.run(); } } 得到的结果为: Animal类的构造方法 斑马发出了吼叫…… 正以每小时65千米的速度奔跑……

  13. 2.3.4方法的重载 • 同一个类中允许同时存在一个以上的同名方法,只要它们的参数个数或类型不同即可,该方法在这样情况下就被重载了。

  14. 【例2-10】加法运算说明方法的重载。 publicclass TestAdd { publicstaticint add(int x,int y) { return x+y; } publicstaticint add(int x,int y,int z) { return x+y+z; } publicstaticdouble add (double x,double y){ return x+y; } publicstaticvoid main(String[] args) { intisum ; doublefsum; isum = add(3, 6); isum = add(4, 7, 8); fsum = add(6.5, 8.9); } }

  15. java编译器,能偶根据调用方法时所传递的参数的个数和类型选择相应的方法。重载方法的参数列表必须不同,要么是参数的个数不同,要么是参数的类型不同。重载方法的返回值类型可以相同,也可以不同。java编译器,能偶根据调用方法时所传递的参数的个数和类型选择相应的方法。重载方法的参数列表必须不同,要么是参数的个数不同,要么是参数的类型不同。重载方法的返回值类型可以相同,也可以不同。 • 在java中,不仅普通方法可以重载,构造方法也可以重载。

  16. 【例2-11】下面用Animal类来说明构造方法的使用【例2-11】下面用Animal类来说明构造方法的使用 publicclass Animal { private String type = ""; public Animal() {//Animal无参构造方法 System.out.println("Animal类的无参构造方法"); } public Animal(String type) {// Animal带一个参数的构造方法 this.type = type; System.out.println("Animal类的有参构造方法"); } public String getType() { return type; } publicvoid setType(String type) { this.type = type; } public String toString() { return "Animal [type=" + type + "]"; } publicvoid sound() { System.out.println(type+"发出了吼叫……"); } publicvoid run() { sound(); System.out.println("正以每小时65千米的速度奔跑……"); }}

  17. AnimalTest测试类如下: publicclass AnimalTest { publicstaticvoid main(String[] args) { Animal a = new Animal(); a.setType("斑马"); a.run(); Animal b = new Animal("狮子"); b.run(); } }

  18. 2.3.5变量作用域及常见错误 • 成员变量:在类中定义的变量,该类的方法可以直接使用。如果别的类的方法要访问它,首先创建该类的对象,然后用点运算符来引用。 • 局部变量:它的作用于仅仅在定义该变量的方法内。

  19. 常见错误一:控制语句块中的局部变量 publicclass Test { publicstaticvoid main(String[] args) { for(int i = 0,count = 0; i < 5; i++){ count++; } System.out.println(count); } }

  20. 常见错误二:误用局部变量 publicclass Test { int java = 88; int data = 90; publicvoid calSum(){ intsum = java + data ; } publicvoid showSum(){ System.out.println(sum); } }

  21. 方法调用小结 • 方法之间允许相互调用,不需要知道方法的具体实现,提高了效率

More Related