1.1:用类制造对象
对象与类
- 对象是实体,需要被创建,可以为我们做事情(具体)
- 类是规范,根据类的定义来创建对象(概念)
- 类定义了每一个对象长什么样、可以进行怎样的操作;而对象是这个类一个个的实例
- 对象 = 属性(数据) + 服务(操作/函数)
封装
- 把数据与对数据的操作放在一起
1.2:定义类
new VendingMachine(); //创建对象VendingMachinevm = new VendingMachine(); //将新创建的对象交给变量vm(类型为自定义的VendingMachine)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()
v.insertMoney(30);
//这里,this.price 代表对象 V 的成员变量 price, price 代表 30(Java识别变量总是优先识别符合变量名最近的那一个)
<a name="3e0f3933"></a>### 调用函数- 通过`.`运算符调用某个对象的函数- 在成员函数内部直接调用自己(`this`)的其他函数<a name="0653fbb8"></a>### 本地变量- 定义在函数内部的变量是本地变量- 本地变量的生存期和作用域都是函数内部- 成员变量的生存期是对象的生存期,作用域是类内部的成员函数---<a name="e0912208"></a># 1.4:对象初始化**构造函数:在构造的时候被自动调用的函数**<a name="25a9e986"></a>### 成员变量定义初始化- 成员变量在定义的地方即可赋初值- 没有初值的成员变量默认 `0` 值- 对象变量 `0` 值,表示未管理任何对象- 定义初始化可以调用函数,甚至可以使用已经定义的成员变量<a name="9bbd2b0d"></a>### 函数重载- 一个类可以有多个构造函数,只要参数表不同- 创建对象时给出不同的参数值,就会调用不同的构造函数- 通过this()还可以调用其他构造函数- 一个类里同名但是参数表不同的函数构成了**重载关系**---<a name="hVsO5"></a># 1.5:本周学习源码```javapublic class Vendingmachine {int price=80;int balance;int total;Vendingmachine() {// TODO 构造函数,无参数total=0;}Vendingmachine(int price) {// TODO 构造函数,带有参数的构造函数this.price=price;}void showprompt() {System.out.println("Welcome!");}void showBalance() {System.out.println("yours balance:"+balance);}void insertMoney(int amount) {balance = balance + amount;showBalance();}void getFood() {if(balance >= price) {System.out.println("here you are!");balance = balance - price;total = total + price;}}public static void main(String[] args) {Vendingmachine a;a = new Vendingmachine(30);a.showBalance();Vendingmachine vm = new Vendingmachine();vm.showprompt();vm.showBalance();vm.insertMoney(100);vm.getFood();vm.showBalance();Vendingmachine vm1 = new Vendingmachine(30);vm1.insertMoney(200);vm.showBalance();vm1.showBalance();}}
