黑马程序员--Java基础学习第五天
面向对象程序设计(Object Oriented Programming,OOP)是基于对象概念的软件设计方法。在面向对象概念中,类是数据和对数据操作的封装体,类具有封装性、继承性、多态性和抽象性。面向对象设计中,把具有属性和行为能力的实体称为对象。
一、类
1、类(class)是数据以及对数据的一组操作的封装体。类中的数据称为成员变量,类中对数据的操作称为成员方法(method),成员变量和成员方法统称为类的成员(member)。成员变量反映类的状态和特征,成员方法表示类的行为能力。
2、声明类
类声明格式如下:
[修饰符] class 类名<泛型> [extends 父类] [implements 接口列表]
类的修饰符有public访问权限、abstract抽象类、final最终类。
Java约定类名标识符首字母大写。
3、声明成员变量和成员方法
(1)成员变量声明格式如下:
[修饰符] 数据类型 变量名 [=表达式] [,变量名] [=表达式];
(2)成员方法声明格式如下:
[修饰符] 返回值类型 方法名 ([参数列表]) [throws 异常类]
{
语句序列;
[return [返回值] ];
}
(3)<修饰符>是一些说明成员属性的关键字,包括访问权限public、protected、private以及静态成员static、最终方法和最终变量final等。
(4)成员方法重载(reload)
一个类中可以有多个同名的成员方法,前提是参数列表必须不同,称为类的成员方法重载,重载的多个方法为一种功能提供多种实现(编译时多态)。重载方法之间必须以不同的参数类型、参数个数、参数的次序来区别。
二、对象
对象(object)是类的实例(instance),即类的取值。
1、声明对象
声明对象的格式如下:
类对象
声明对象仅仅说明了对象所属的类,必须通过赋值才能使对象获得实例。
2、创建实例
使用new运算符可调用类的一个构造方法,创建该类的一个实例,为实例分配内存空间并初始化,再将该实例赋值给一个对象,语法格式如下:
对象 = new 类的构造函数([参数列表])
3、引用对象的成员变量和成员方法
对象获得一个实例后,就可以使用点运算符“.”引用对象中的成员变量和调用成员方法,语法格式如下:
对象.成员变量
对象.成员方法([参数列表])
4、对象的引用模型
Java的类是引用数据类型,两个对象之间的赋值是引用赋值,对象赋值过程中没有创建新的实例。
5、对象的关系运算与比较相等
使用关系运算符==、!=可比较两个对象是否引用同一个实例。其他关系运算符<、<=、>、>=不能用于比较对象,Java不支持C++的运算符重载功能。
三、类的封装性
封装()是面向对象的重要概念之一,是面向对象程序设计中信息隐藏思想的具体实现技术。类的封装包含两种含义:第一,将数据和对数据的操作组合起来构成类,对象是一个不可分割的独立单位;第二,实现信息隐藏,类既要提供与外部联系的方法,又要尽可能的隐藏实现细节。
Java提供构造函数、析构函数、方法重载、设置访问控制权限等措施对类进行封装。
四、构造方法
类的构造方法()用于创建类的一个实例并对实例的成员变量进行初始化。构造函数与类中成员方法的不同之处是:构造方法与类同名;构造方法通过new运算符调用。
1、声明及调用构造方法
一个类可声明多个构造方法对成员变量进行不同需求的初始化,构造方法不需要写返回值类型,因为它返回的就是该类的一个实例。
2、默认构造方法
当一个类没有声明构造方法时,Java自动为该类提供一个无参数的默认构造方法,对各个成员变量按其数据类型进行初始化,整数、浮点数、字符、布尔和引用数据类型的初值分别为0、0.0、’\u0000’、false和null。
当一个类声明了构造方法,Java不再提供默认构造方法。
3、拷贝构造方法
一个类的构造方法,如果其参数是该类对象,称为拷贝构造方法,它将创建的新对象初始化为形式参数的实例值,实现对象的复制功能。Java不提供默认拷贝构造方法。
4、构造方法重载
Java支持构造方法重载,重载的构造方法提供创建实例时的多种初始化方案。
五、this引用和instanceof对象运算符
1、this引用有3种用法
(1)指代对象本身
this用于指代调用成员方法的当前对象自身。
(2)访问本类的成员变量和成员方法
使用this引用当前对象的成员变量,调用当前对象的成员方法。
(3)调用本类重载的构造方法
this引用可用在重载的构造方法中,调用本类已定义的构造方法。在构造方法中,this()必须放在构造函数的第一行。不能使用this调用当前构造函数。
2、instanceof对象运算符
对象运算符instanceof判断一个对象所引用的实例是否属于指定类及其子类,运算结果是布尔类型。
六、构造代码块
格式如下:
{
语句序列;
}
在类实例化对象时,构造代码块优先于构造函数执行。
七、访问控制
Java为类及其成员提供公有、保护、缺省和私有等多级控制权限,实现信息分级隐藏技术。访问控制权限也称为可见性。类有2中访问控制权限,类中成员有4种访问控制权限。
1、类的访问控制权限
类有2种访问控制权限:公有和缺省。公有权限使用public修饰符,可被所有类访问;缺省权限没有修饰符,可被当前包(当前文件夹)中的类访问。
一个源程序文件中可以声明多个类,但用public修饰的类只能有一个,且该类名必须与文件名相同。
2、类中成员的访问控制权限
一个类的所有成员都可被本类的代码访问。为了控制其他类的访问,类的成员有4种访问控制权限,说明如下。
(1)private声明私有成员,该成员仅能被当前类的成员访问。
(2)没有修饰符表示缺省权限,说明该成员能被当前类以及当前包中的其他类访问,也称在当前包中可见。
(3)protected声明保护成员,该成员能被当前类及其子类、或当前包中的其他类访问,也称在子类中可见。
(4)public声明公有成员,该成员可被所有类访问。
public等权限修饰符不能用于修饰方法体中的局部变量。因为局部变量的作用域仅限于当前方法,对其他类不可见,不存在其他类对它的访问。