Java语言进阶笔记 ----第一周 类和对象

**

对象变量是对象的管理子和而非所有者

**

理解:
类定义了对象长什么样?对象是按照类的定义所制造出来的实体,一个类可以创建很多对象,每个对象有自己的数据。

对象与类:

* 对象是实体,需要被创建,可以为我们做事情
* 类是规范,根据类的定义来创建对象
* 对象(这只猫)
    * 表达东西或事件
    * 运行时响应消息(提供服务)
* 类(猫)
    * 定义所有猫的属性
    * 就是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()还可以调用其它构造函数
* 一个类里的同名但参数表不同的函数构成了重载关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计并实现一个动态整型数组Vect,要求: (1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。 (2)设计拷贝构造函数和析构数,注意使用深拷贝。 (3)设计存取指定位置的数组元素的公有成员数,并进行下标越界,若越界则输出“out of boundary”。 (4)设计获取数组元素个数的公有成员数。 (5)设计用于输出数组元素的公有成员数,元素之间以空格分隔,最后以换行符结束。 在main数中按以下顺序操作: (1)根据内置的静态整型数组{1,2,3,4,5}构造数组对象v1,根据输入的整型数构造数组对象v2。 (2)调用Vect的成员数依次输出v1和v2的所有元素。 (3)输入指定的下标及对应的整型数,设置数组对象v1的指定元素。 (4)根据数组对象v1拷贝构造数组对象v3。 (5)调用Vect的成员数依次输出v1和v3的所有元素。 设计并实现一个动态整型数组Vect,要求: (1)实现构造函数重载,可以根据指定的元素个数动态创建初始值为0的整型数组,或根据指定的内置整型数组动态创建整型数组。 (2)设计拷贝构造函数和析构数,注意使用深拷贝。 (3)设计存取指定位置的数组元素的公有成员数,并进行下标越界,若越界则输出“out of boundary”。 (4)设计获取数组元素个数的公有成员数。 (5)设计用于输出数组元素的公有成员数,元素之间以空格分隔,最后以换行符结束。 在main数中按以下顺序操作: (1)根据内置的静态整型数组{1,2,3,4,5}构造数组对象v1,根据输入的整型数构造数组对象v2。 (2)调用Vect的成员数依次输出v1和v2的所有元素。 (3)输入指定的下标及对应的整型数,设置数组对象v1的指定元素。 (4)根据数组对象v1拷贝构造数组对象v3。 (5)调用Vect的成员数依次输出v1和v3的所有元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值