第四章-类与对象
1. 类与对象的概念
1.1抽象
-
概念:从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,抽取与研究工作有关的实质性内容加以考察,形成对所研究问题正确的、简明扼要的认识。
-
分类:分为过程抽象与数据抽象
-
过程抽象:指任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管这个操作可能是由一系列更低级的操作完成的
-
数据抽象:把需要处理的数据和施加于这些数据之上的操作结合为一个不可分的对象,根据功能、性质、作用等把它们抽象成不同的抽象数据类型
-
1.2对象
-
概念:把客观世界的事实映射到面向对象的程序设计中,则把事物抽象成为对象
-
性质:包括对象标识、属性、方法
1.3类
-
概念:抽象与当前目标有关的本质特征,忽略那些与当前目标无关的非本质特征,找出事物的共性,把具有共性的事物归为一类,得出抽象概念-类。
-
分类:Java类库中的类与用户自己定义的类
1.4类与对象的关系
-
对象是类的一个实例
-
类是对象的模板
-
类是多个实例的综合抽象
-
实例是类的个体实物
1.5创建类
1.6创建对象
-
声明对象
-
建立对象
-
初始化对象
1.7使用对象
1.8对象初始化与构造方法
-
构造方法:是一个类的方法中方法名与类名相同的类方法
-
构造方法特点:
1.构造方法的方法名与类名相同
2.构造方法是类的方法,能够简化初始化操作
3.不能对构造方法指定类型,它有隐含的返回值,由系统内部使用
4.构造方法一般不能显式地直接调用,在创建一个类的对象的同时,系统会自动调用该类的构造方法将对象初始化
5.构造方法可以重载,即定义多个具有不同参数的构造方法
6.构造方法可以继承,即子类可以继承父类的构造方法
7.如果用户在一个自定义类中未定义该类的构造方法,系统将为这个类定义一个缺省的空构造方法
2. 封装机制
2.1封装
-
概念:把对象的属性和行为结合为一个独立的单位,并尽可能隐藏对象的内部细节
-
特点:
1.在类的定义中可以设置对象属性和方法的访问权限
2.提供一个接口来描述其他对象的使用方法
3.其他对象不能直接修改本对象所拥有的属性和方法
2.2类修饰符
-
无修饰符的情况:无修饰符的类只能被同一个包里的类使用
-
public修饰符的情况:public修饰的类不仅可以供它所在的包中类使用,还可以供其他包的类使用
-
final修饰符修饰的情况:用final修饰符修饰的类被称为最终类,不能被任何其他类继承
-
abstract修饰符修饰的情况:用abstract修饰符修饰的类被成为抽象类,abstract类自身没有对象,需要派生子类后再创建子类的对象
3. 数据成员
3.1修饰符
-
访问权限修饰符:public、private、protected
-
非访问权限修饰符:static、final
3.2 static修饰静态数据成员
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员
-
它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中
-
可以通过类名加点操作符访问它
3.3 静态数据成员初始化
-
静态数据成员初始化可以在用户定义时进行,也可以由静态初始化器来完成
-
静态初始化器是在将类加载到内存时执行,而构造方法是在new运算符产生新对象时执行
3.4 用final修饰的最终数据成员
-
要么在声明时进行初始化
-
要么通过构造方法初始化
-
不能在其他地方初始化
4. 成员方法
4.1 修饰符
-
访问权限修饰符:public、private、protected
-
非访问权限修饰符:static、final、native、abstract
4.2 方法体中的局部变量
-
在方法体内可以定义本方法所使用的变量,这种变量是局部变量,离开本方法被自动释放
-
方法体内定义变量时,变量前不能加修饰符
-
局部变量在使用前必须明确赋值,否则会出错
-
在一个方法内部,可以在复合语句中定义变量,这些变量只在复合语句中有效
4.3 返回值类型
4.4 方法名
4.5 形式参数表
-
引用成员方法格式:成员方法名(实参列表)
-
对于无参成员方法来说,是没有实参列表的,但方法名后的括号不能省略
-
对于带参数的成员方法来说,实参的个数、顺序、数据类型必须和形参保持一致
-
各个实参间用逗号分隔
-
实参变量对形参变量的数据传递是值传递,即只能由实参传递给形参,不能由形参传递给实参