写在前面:
给自己设定一个目标吧,无论是什么样的分享感悟,在年终的时候尽量写够500篇文章,就是凑也要凑到,呵呵。可能是技术上的成长经历,也许是个人成长方面一些经验,总之,是要有用的,无论是对自己还是别人,说的俗一点,就是要有正能量,嗯,不要是消极的观点。也许在很多成手,或者技术大神眼里,我的分享会显的浅薄,无聊。可是又有什么关系呢,我是在梳理自己的成长脉络。我本人呢,不太适合立长志,那只有长立志&长励志了。
也许一段时间以后,自己看这些文字的时候,都会笑,自己以前怎么这么傻缺呢?
目标
目标:理解类的定义和对象的关系?理解对象中成员变量是怎么来的?怎么能让成员函数明白自己和那个对象打交道?
成员变量
- 类定义了对象中所具有的变量,这些变量称作成员变量;
- 每个对象都有自己的变量,和同一个类的其他对象是分开的。
怎么能让成员函数明白自己和那个对象打交道?
函数是通过对象来调用的
- 通过”.“ 运算符。
- 变量对象.函数
- eg:a.inser();这次调用就建立起了inser()和a之间的关系,让inser()内部的成员变量指的是a的成员变量。
而在成员函数内部直接调用自己的其他函数,使用this。
- this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个对象;
- 在函数内部可以直接使用this。
在成员的外部,通过. 运算符调用某个对象函数。
对象初始化
成员变量有初始值:0(没有给初始值时)
构造函数
如果有一个成员的名字和类的名字完全相同,则在创建这个类的每一个对象的时候会自动调用这个函数。这个函数我们称为构造函数,而且的构造函数没有返回类型。
在写构造函数的时候,也可以给一个函数值,在执行对象的时候,会根据函数去自动选择一个适合的函数。我们称为重载。(表述的估计不够准备,按照自己理解想到的,以后理解加深了,会回来重写。)
函数重载
- 一个类可以有多个构造函数,只要它们的参数表不同;
- 构造函数无访问修饰符
- 无返回值类型
VendingMachine(){ // 构造函数
total = 0;
}
- 创建对象的时候可以给不同的参数值,就会自动调用不同的构造函数;
- 通过this()可以调用其他构造函数;
- 只能放在第一句。
- 只能在构造函数内使用。
一个类里的同名但参数表不同的函数构成了重载关系。
自己看视频也看的迷迷糊糊的,希望有人指点。
代码部分,以后复习的时候看。
package vendingMachine;
public class VendingMachine {
// private static String ;
int price = 80;//创建属性prince,并赋值80(定价80)
int balance; //当前的余额
int total;
VendingMachine(){ // 构造函数
total = 0;
}
VendingMachine(int price){ // 重载 (参数表)
this.price = price;
System.out.println("重构后价格:"+price);
}
void showPrompt()
{
System.out.println("Welcom 求知张郎的自动售货机");
}
void insertMoney( int amount)
{
System.out.println("您投入的金额为:"+(balance = balance + amount));
}
void showBalance(){
System.out.println("您的余额为:"+balance);
}
void getFlood()
{
if(balance >= price){
System.out.println("Here you are !");
balance = balance - price;
total = total + price;
}
else{
System.out.println("资金不足!请将继续投币。"
+ "^_^");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
VendingMachine vm = new VendingMachine();//制作对象vm;
vm.showPrompt();//调用showPrompt方法。
vm.showBalance();
vm.insertMoney(100);// 调用方法insertMoney,并赋值100(表示投入金额100元)
vm.getFlood();//
vm.showBalance();// 重新显示余额。
VendingMachine vm1 = new VendingMachine(100);
vm1.insertMoney(200);
vm1.getFlood();
vm1.showBalance();
}
}