**
对象变量是对象的管理子和而非所有者
**
理解:
类定义了对象长什么样?对象是按照类的定义所制造出来的实体,一个类可以创建很多对象,每个对象有自己的数据。
对象与类:
* 对象是实体,需要被创建,可以为我们做事情
* 类是规范,根据类的定义来创建对象
* 对象(这只猫)
* 表达东西或事件
* 运行时响应消息(提供服务)
* 类(猫)
* 定义所有猫的属性
* 就是Java中的类型
* 可以用来定义变量
对象 = 属性 + 服务
* 数据: 属性或状态
* 操作: 函数
封装:
* 把数据和对数据的操作放在一起
OOP特性
1. 万物皆对象
2. 程序就是一对互相发送消息的对象
3. 每个对象有自己的存储空间,里面是其他的对象
4. 每个对象都有一个类型
5. 所有属于某个特性类型的对象可以提供相同的服务
定义类:
* 表示对象有什么的成员变量 成员变量代表有什么
* 表示对象能做什么的成员函数 成员函数代表能做什么
创建对象:
对象的变量只是对变量的管理者
让对象做事情:
* . 运算符
* v.insertMoney(10);
* v,getFood();
成员变量和成员函数
* 写在类的成员变量,只是一个声明,变量并不在那里,
* 变量不在类里,变量在每一个对象里
函数与成员变量
* 在函数中可以直接写成成员变量的名字来访问成员变量
* 函数是通过对象来调用的
this
* this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个对象
调用函数
* 通过 . 运算符调用某个对象的函数
* 在成员函数内部直接调用自己(this) 的其他函数
* 在成员函数的内部,直接调用其他的成员函数即可
* 而在成员函数的外部,则需要用调用对象来调用成员函数
本地变量
* 定义在函数内部的变量是本地变量
* 本地变量的生存期和作用域都是函数内部
一旦进入函数,本地变量就有了 —-> 出了函数,成员函数就没了
* 成员变量的生存期是对象的生存期,作用域是类内部的成员函数
* 什么时候消失?Java有自动垃圾回收装置
Main是不是成员函数?
Java同样是以main函数作为程序执行出入口的,但Java作为“更纯洁”的面向对象语言,它的main函数与C/C++有很大的不同。
1. 返回值的概念淡化,在Java Application中main不允许返回值,因此int main是被禁止的,必须使用void main,int main仅限在JavaBean中使用。
2. Java中所有的函数必须属于类,没有什么全局函数一说,因此main函数不能是全局成员,必须是某个类的成员。
3. 由于main函数变成了类的成员函数,因此要想直接被系统调用,还必须使用public static使其成为静态函数并具有公开权限。
4. main函数的参数被简化,只需要提供字符串数组即可,不需要提供参数个数(这是由于Java的数组具有下标检查功能的原因)
Java Application中的main函数一般格式如下(类名可以自定义,但保存为Java源码时,主文件名必须与类名相同,否则可能无法运行)
对象初始化:
* 对于本地变量,
* 构造函数
* 在构造的时候会被自动调用的一个函数
* 如果有一个成员函数的名字和类的名字完全相同,则在创建这个类的每一个对象的时候,会自动调用用这个函数 —- > 构造函数
// 1. 构造函数
VendingMachine()
{
total = 0;
}
// 2.
VendingMachine(int price)
{
this.price = price;
}
函数重载:
* 一个类可以有多个构造函数,只要它们的参数表不同
* 创建对象的时候给出不同的参数值,就会自动调用不同的构造函数
* 通过this()还可以调用其它构造函数
* 一个类里的同名但参数表不同的函数构成了重载关系