6.1面向对象概述
c语言是一种结构化的,Java是一种面向对象的
随着软件的规模越来越大,结构化语言的弊端也逐渐暴露出来,开发周期长,结果也不尽如人意。这时Java语言变应运而生,也就是面向对象的开发思想。
6.1.1对象
什么是对象?现实世界中,随处可见的一种事物就是对象.对象是事物存在的实体,如人、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常分为静态部分和动态部分。
动态属性,静态属性。顾名思义,静态部分就是不能动的部分,这个部分称为属性这个属性包括人的高矮胖瘦,性别年龄,而动态属性就是对象可执行的动作,包括人的哭泣,微笑,说话,行走。
世界万物皆对象
(1)从这一问题中抽象出对象,这里抽象出的对象为大雁。
(2)识别这个对象的属性。对象具备的属性都是静态属性,如大雁有一对翅膀、黑色的羽毛等。
(3)识别这个对象的动态行为,也就是这只大雁可以进行的动作,如飞行、觅食等,这些行为都是这个对象基于其属性而具有的动作。
(4)识别出这个对象的属性和行为后,这个对象就被定义完成了。然后可以根据这只大雁具有的特性制定这只大雁从北方飞向南方的具体方案解决问题。
6.1.2类
类包含静态属性和动态属性,类就是对象的设计图
不能将一个事物描述成一类事物,如一只鸟不能统称为鸟类。但如果要给某一类事物一个统称,需要用到类这个概念。
类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。例如,鸟类封装了所有鸟的共同属性和应有的行为,如上图所示。
定义完鸟类之后,可以根据这个类抽象出一个实体对象,最后通过实体对象来解决相关的实际问题。
在Java语言中,类对象的行为是以方法的形式的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和方法。
6.1.3封装
面向对象程序设计具有以下特点:封装性、继承性和多态性。
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无须知道计算机内部是怎样工作的。即使知道计算机的工作原理,但在使用计算机时也并不完全依赖于计算机工作原理等细节。
采用封装的思想保证了类内部数据结构的完整性,使用类的用户不能轻易地直接操作类的数据结构,只能执行类允许公开的数据。这样避免了外部操作对内部数据的影响,提高了程序的可维护性。
类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。例如,鸟类封装了所有鸟的共同属性和应有的行为,如上图所示。
定义完鸟类之后,可以根据这个类抽象出一个实体对象,最后通过实体对象来解决相关的实际问题。
在Java语言中,类对象的行为是以方法的形式的,对象的属性是以成员变量的形式定义的,所以类包括对象的属性和方法。
6.1.3封装
面向对象程序设计具有以下特点:封装性、继承性和多态性。
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无须知道计算机内部是怎样工作的。即使知道计算机的工作原理,但在使用计算机时也并不完全依赖于计算机工作原理等细节。
采用封装的思想保证了类内部数据结构的完整性,使用类的用户不能轻易地直接操作类的数据结构,只能执行类允许公开的数据。这样避免了外部操作对内部数据的影响,提高了程序的可维护性。
6.2.1成员变量
对象的属性也称为成员变量,成员变量可以是任意类型,整个类中均是成员变量作用范围。下面通过一个实例来演示
在上面的实例可以看出,在Java语言中需要用class关键字来定义类,课本实例内容 是它的类名称。同时在这个类中定义了一个成员变量,成员变量的类型为String类型。成员变量就是普通的变量,可以为她设置初始值,也可以不设置初始值。如果不设置初始值,则会有默认值。要注意成员变量前面修饰的关键字。
6.2.2成员方法
使用成员方法对应于类对象的行为。以刚刚那个类为例,它包含getName()和setName()两个方法,格式如下
权限修饰符 返回值类型 方法名(参数类型 参数名){
... //方法体
return 返回值;
}
一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值,可以在方法体中使用return关键字,使用这个关键字后,方法的执行将被终止。
6.2.3权限修饰符
Java中的权限修饰符主要包括private(私有的)、public(共有的)、protected(受保护的)、default(默认),这些修饰符控制着对类和类的成员变量以及成员方法的询问,权限如下表
6.2.4局部变量
6.2.2中讲述了成员方法,如果在成员方法内定义一个变量,那么这个变量被称为局部变量
6.2.5局部变量的有效范围
可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止,但是在互相不嵌套时作用域可以同时声明两个名称和类型相同的局部变量,在互相嵌套时不能这样。看课本上的图片
6.2.6 this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类。this关键字只能在本类中使用。
6.3类的构造方法
在类中,除了成员方法外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。
构造方法有两个特点1.没有返回值 2.构造方法的名称要与本类的名称相同。
构造方法的定义语法格式如下:
public Book(){
... //构造方法体
}
public:构造方法修饰符。
Book:构造方法的名称。
6.4静态变量和静态方法
在介绍静态变量和静态方法之前,首先需要介绍static关键字,因为由static修饰的变量和方法被称为静态变量和静态方法。
static(静态),这个词可以修饰函数,方法,变量,属性等,被声明为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
6.4静态变量和静态方法
在介绍静态变量和静态方法之前,首先需要介绍static关键字,因为由static修饰的变量和方法被称为静态变量和静态方法。
static(静态),这个词可以修饰函数,方法,变量,属性等,被声明为static的变量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
6.5类的主方法
主方法是类的入口点,它定义了程序从何处开始。主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。