1.1:用类制造对象

对象与类

  1. 对象是实体,需要被创建,可以为我们做事情(具体)
  2. 类是规范,根据类的定义来创建对象(概念)
  3. 类定义了每一个对象长什么样、可以进行怎样的操作;而对象是这个类一个个的实例
  4. 对象 = 属性(数据) + 服务(操作/函数)

封装

  • 把数据与对数据的操作放在一起

1.2:定义类

  1. new VendingMachine(); //创建对象VendingMachine
  2. vm = new VendingMachine(); //将新创建的对象交给变量vm(类型为自定义的VendingMachine)
  3. VendingMachine vm = new VendingMachine(); //常用的方式
  • 对象的变量为对象的管理者
  • 点运算符( . v.insertMoney()

1.3:成员变量与成员函数

函数与成员变量

  • 在函数中,可以直接写成员变量名来访问成员变量
  • <函数>通过对象来调用
  • v.insertMoney() 就进行了一次临时调用
    调用临时建立了insertMoney()函数与 V 之间的关系,让insertMoney()内部的成员变量调用指的是 V 的成员变量

this

  • 通过this:成员函数的一个特殊固有的本地变量,代表调用这个函数的那个对象 ```java void insertMoney(int price){

    this.price = price; } //我们定义一个这样的函数

VendingMachine v = new VendingMachine()

  1. v.insertMoney(30);

//这里,this.price 代表对象 V 的成员变量 price, price 代表 30(Java识别变量总是优先识别符合变量名最近的那一个)

  1. <a name="3e0f3933"></a>
  2. ### 调用函数
  3. - 通过`.`运算符调用某个对象的函数
  4. - 在成员函数内部直接调用自己(`this`)的其他函数
  5. <a name="0653fbb8"></a>
  6. ### 本地变量
  7. - 定义在函数内部的变量是本地变量
  8. - 本地变量的生存期和作用域都是函数内部
  9. - 成员变量的生存期是对象的生存期,作用域是类内部的成员函数
  10. ---
  11. <a name="e0912208"></a>
  12. # 1.4:对象初始化
  13. **构造函数:在构造的时候被自动调用的函数**
  14. <a name="25a9e986"></a>
  15. ### 成员变量定义初始化
  16. - 成员变量在定义的地方即可赋初值
  17. - 没有初值的成员变量默认 `0` 值
  18. - 对象变量 `0` 值,表示未管理任何对象
  19. - 定义初始化可以调用函数,甚至可以使用已经定义的成员变量
  20. <a name="9bbd2b0d"></a>
  21. ### 函数重载
  22. - 一个类可以有多个构造函数,只要参数表不同
  23. - 创建对象时给出不同的参数值,就会调用不同的构造函数
  24. - 通过this()还可以调用其他构造函数
  25. - 一个类里同名但是参数表不同的函数构成了**重载关系**
  26. ---
  27. <a name="hVsO5"></a>
  28. # 1.5:本周学习源码
  29. ```java
  30. public class Vendingmachine {
  31. int price=80;
  32. int balance;
  33. int total;
  34. Vendingmachine() {
  35. // TODO 构造函数,无参数
  36. total=0;
  37. }
  38. Vendingmachine(int price) {
  39. // TODO 构造函数,带有参数的构造函数
  40. this.price=price;
  41. }
  42. void showprompt() {
  43. System.out.println("Welcome!");
  44. }
  45. void showBalance() {
  46. System.out.println("yours balance:"+balance);
  47. }
  48. void insertMoney(int amount) {
  49. balance = balance + amount;
  50. showBalance();
  51. }
  52. void getFood() {
  53. if(balance >= price) {
  54. System.out.println("here you are!");
  55. balance = balance - price;
  56. total = total + price;
  57. }
  58. }
  59. public static void main(String[] args) {
  60. Vendingmachine a;
  61. a = new Vendingmachine(30);
  62. a.showBalance();
  63. Vendingmachine vm = new Vendingmachine();
  64. vm.showprompt();
  65. vm.showBalance();
  66. vm.insertMoney(100);
  67. vm.getFood();
  68. vm.showBalance();
  69. Vendingmachine vm1 = new Vendingmachine(30);
  70. vm1.insertMoney(200);
  71. vm.showBalance();
  72. vm1.showBalance();
  73. }
  74. }