第六章 面向对象编程基础

目录

6.1 面向对象概述

6.1.1  对象

6.1.2  类

6.1.3  面向对象程序设计的特点

6.2  类与对象

6.2.1  成员变量

​ 6.2.2  成员方法

6.2.3  构造方法

6.2.4  局部变量

6.2.5  局部变量的有限范围

6.2.6  对象的创建

6.2.7  访问对象的属性和行为

6.2.8  对象的销毁

6.2.9  this关键字

6.3  static  关键字

6.3.1  静态变量

6.3.2  静态常量

6.3.3  静态方法

6.3.4  静态代码块

6.4  类的主方法

6.5  小结


6.1 面向对象概述

在程序开发初期人们使用结构化开发语言,但随着软件的规模越来越庞大,结构化语言的弊端也逐渐暴露出来,开发周期被无休止地拖延,产品的质量也不尽如人意,结构化语言已经不再适合当前的软件开发。这时人们开始将另一一种开发思想引入程序中,即面向对象的开发思想。面向对象思想是人类最自然的种思考方式,它将所有预处理的问题抽象为对象,同时了解这些对象具有哪此相应的属性以及行为,以解决这些对象面临的一些实际问题, 这样就在程序开发中引入了面向对象设计的概念,面向对象设计实质上就是对现实世界的对象进行建模操作。

6.1.1  对象

在现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。静态部分,顾名思义,就是不能动的部分,这个部分被称为“属性”,任何对象都具备其自身属性,如一个人,其属性包括高矮、胖瘦、性别、年龄等。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分),人类通过探讨对象的属性和观察对象的行为了解对象。

在计算机的世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象为对象,然后考虑这个对象具备的属性和行为。例如,现在面临一只大雁 要从北方飞往南方这样一个实际问题,试着以面向对象的思想来解决这一实际问题。 步骤如下:


 

(1)首先可以从这一问题中抽象出对象,这里抽象
出的对象为大雁。
(2)然后识别这个对象的属性。对象具备的属性都
是静态属性,如大雁有一对翅膀、黑色的羽毛等。这些属性。
(3)接着识别这个对象的动态行为,即这只大雁可
以进行的动作,如飞行、觅食等,这些行为都是这个对象基于其属性而具有的动作。
(4)识别出这个对象的属性和行为后,这个对象就被定义完成了,然后可以根据这只大雁具有的特性制定这只大雁要从北方飞向南方的具体方案以解决问题。
究其本质,所有的大雁都具有以上的属性和行为,可以将这些属性和行为封装起来以描述大雁这类动物。 由此可见,类实质上就是封装对象属性和行为的载体,而对象则是类抽象出来的一个实例。

6.1.2  类

不能将所谓的一个事物描述成一类事物, 如一只鸟不能称为鸟类。如果需要对同一类事物统称,就不得不说明类这个概念。
类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称,如鸟类、家禽类、人类等。类是构造对象时所依赖的规范,如一只鸟具有一-对翅膀,它可以用这对翅膀飞行,而基本上所有的鸟都具有翅膀这个特性和飞行的技能,这样具有相同特性和行为的- -类事物就称为类,类的思想就是这样产生的。在图6.3中已经描述过类与对象之间的关系,对象就是符台某个类的定义所产生出来的实例。更为恰当的描述是,类是世间事物的抽象称呼,而对象则是这个事物相对应的实体。 如果面临实际问题,通常需要实例化类对象来解决。例如,解决大雁南飞的问题,这里只能拿这只大雁来处理这个问题,而不能拿大雁类或鸟类来解决。
类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。例如,鸟类封装了所有鸟的共同属性和应具有的行为,定义完鸟类之后,可以根据这个类抽象出一个实体对象,最后通过实体对象来解决相关的实际问题。
在Java语言中,类包括对象的属性和方法。类中对象的属性是以成员变量的形式定义的,对象的行为是以方法的形式定义的,有关类的具体实现会在后续章节中进行介绍。

6.1.3  面向对象程序设计的特点

面向对象程序设计的特点:封装性、继承性、多态性、
1.封装
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。


2.继承
类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。关联主要描述两个类之间的一般二元关系, 例如,一个百货公司类与销售员类就是一个关联,学生类与教师类也是一个关联,两个类之间的关系有很多种,继承是关联中的一种。
3.多态
上面介绍了继承,了解了父类和子类,其实将父类对象应用于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。下 面以图形类来说明多态。
图形类作为所有图形的父类,具有绘制图形的能力,这个方法可称为“绘制图形”,但如果要执行这个“绘制图形”的命令,没有人知道应该画什么样的图形,并且如果要在图形类中抽象出一个图形对象,没有人能说清这个图形究竟是什么图形,所以使用“抽象”这个词来描述图形类比较恰当。在Java语言中称这样的类为抽象类,抽象类不能实例化对象。在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程。实质上这个方法也是抽象的,如图形类中的“绘制图形”方法只提供一个可以绘制图形的标准, 并没有提供具体绘制图形的流程,因为没有人知道究竞需要绘制什么形状的图形。
每个图形都拥有绘制自己的能力,这个能力可看作是该类具有的行为,如果将子类的对象统一看作是父类的实例对象,这样当绘制图形时,简单地调用父类也就是图形类绘制图形的方法即可绘制任何图形,这就是多态最基本的思想。图6.7的图形类中绘制图形的方法很好地体现了面向对象的多态思想。

6.2  类与对象

l类的封装对象的属性和行为的载体,Java中定义类使用class关键字

语法如下:

//类的成员变量

//类的成员方法

}

在Java语言中对象的属性以成员变量的形式存在,对象的方法以成员方法的形式存在。

6.2.1  成员变量

在Java中对象的属性也称为成员变量,成员变量的定义与普通变量的定义一样,

语法如下:
其中,[=值]表示可选内容,即定义变量时可以为其赋值,也可以不为其赋值。

为了了解成员变量,首先定义一个鸟类,成员变量对应于类对象的属性,在Bird类中设置4成员变量,分别为wing、claw、beak 和feather,分别对应于鸟类的翅膀、爪子、喙和羽毛。

public class Bird {String wing;        //翅膀

String claw;        //爪子

String beak;       //喙

String feather;      //羽毛

根据以上代码,读者可以看到在Java中使用class 关键字来定义类,Bird 是类的名称。同时Bird类中定义了4个成员变量,成员变量的类型可以设置为Java中合法的数据类型,其实成员文就是普通的变量,可以为它设置初始值,也可以不设置初始值。如果不设置初始值。

 6.2.2  成员方法

在Java语言中,成员方法对应于类对象的行为,它主要用来定义类可执行的操作,它是包含系列语句的代码块,本节将对成员方法进行详细讲解。
1.成员方法的定义

定义成员方法的语法格式:
[权限修饰符] [返回值类型]方法名( [参数类型参数名] ) [throws 异常类型] {

..//方法体

return 返回值;

}

其中,“权限修饰符”可以是private、public、 protected 中的任一一个, 也可以不写,主要用来控制方法的访问权限,关于权限修饰符将在下章中详细讲解;“返回值类型”指定方法返回数据 的类型,可以是任何类型,如果方法不需要返回值,则使用void 关键字;一个成 员方法既可以有参数,也可以没有参数,参数可以是对象也可以是基本数据类型的变量。

例如:定义一个showGoods方法,用来输出库存商品信息:

public void showGoods(){

system.out.println("库存商品名称:");

system.out.println(FullName);

如果定义的方法有返回值,则必须使用returm关键字返回一个指定类型的数据,并且返回值类型要与方法返回的值类型一致, 例如,定义一个返回值类型为 int的方法, 就必须使用retum返回一个int类型的值。

代码如下:

public void showGoods(){

system.out.println("库存商品名称:");

return 1;

}

2.成员方法的参数
调用方法时可以给该方法传递一个或多 个值,传给方法的值叫做实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值