前言
本周开始,我们将进入Java SE的oop(Object-orientedProgramming 面向对象编程)的相关介绍。C是面向过程的编程语言,而Java的特点是面向对象。面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。
举个最简单点的例子来区分面向过程和面向对象
有一天你想吃火锅了,怎么办呢?你有两个选择
1、自己买材料,肉,火锅底料,蔬菜,海鲜等等然后切菜切肉,开涮,盛到盘子里开吃。
2、去饭店,张开嘴:老板!牛油微辣锅底!
看出来区别了吗?1是面向过程,2是面向对象。
面向对象的语言中,包含了三大基本特征,即封装、继承、多态。
1、封装
隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
2、继承
提高代码复用性;继承是多态的前提。
3、多态
父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。
什么是类
类是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该事物。在现实中,描述一类事物时,属性指的是该事物的状态信息。行为指的是该事物能够做什么。类是类型,是模板,代码中用class关键字定义的就称之为类。
类的定义:
public class ClassName {
//成员变量
//成员方法
}
成员方法的定义
public void 方法名称(){
//方法体
}
注意事项:
1、方法必须创建后才能使用,该过程称为方法的定义;
2、方法创建后不是直接运行的,需要手动使用后才能执行,该过程称为方法的调用;
3、方法的执行顺序和编写顺序没有关系,主要看调用顺序;
4、方法与方法之间是平级关系,不能嵌套使用;
方法的作用可以提高代码的复用性,提高代码的可阅读性
什么是对象
对象是类的实例。宠物狗是一个类的话,每个养狗人士的狗就是一个相对于宠物狗类的对象。对象具有这个类的所有属性。类似于宠物狗的具体品种,具体年龄,毛色等等。所以也可以说,类是对象的抽象,对象是类的实例。
成员变量与局部变量
成员变量就是方法外部,类的内部定义的变量;局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。 形式参数是局部变量,局部变量中基础数据类型的引用和值都存储在栈中,对象引用存在栈中,对象存在堆中。栈内存中的局部变量随着方法的消失而消失。 成员变量存储在堆中的对象里面,由垃圾回收器负责回收。
包(package)
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。