第六章总结

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

面向对象程序设计具有以下特点:
封装性。
继承性。
多态性。

1. 封装

封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类户隐藏其实现细节,这就是封装的思想。例如,用户使用计算机时,只需要使用手指能地以实现一些功能,无须知道计算机内部是如何工作的,即使可能知道计算机的工作原理, 个计算机时也并不完全依赖于计算机工作原理这些细节。 
采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易地直接结构,只能执行类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性

2.继承
2.继承性主要利用特定对象之间的共有属性。例如,平行四边形是四边形,正方形、矩形也是四边形,平行四边形与四边形具有共同特性,就是拥有4条边,可以将平行四边形类看作四边形的延伸,平行四边形复用了四边形的属性和行为,同时添加了平行四边形独有的属性和行为,如平行四边形的对边平行且相等。这里可以将平行四边形类看作是从四边形类中继承的。在Java语言中将类似于平行四边形的类称为子类,将类似于四边形的类称为父类或超类。值得注意的是,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也就是说子类的实例都是父类的实例,但不能说父类的实例是子类的实例。

多态
上面介绍了继承,了解了父类和子类,其实将父类对象应用于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。
下面以图形类来说明多态。
图形类作为所有图形的父类,具有绘制图形的能力,这个方法可称为“绘制图形”,但如果要执行这个“绘制图形”的命令,没有人知道应该画什么样的图形,并且如果要在图形类中抽象出一个图形对象,没有人能说清这个图形究竟是什么图形,所以使用“抽象”这个词来描述图形类比较恰当。在Java语言中称这样的类为抽象类,抽象类不能实例化对象。在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体流程。实质上这个方法也是抽象的,如图形类中的“绘制图形”方法只提供一个可以绘制图形的标准,并没有提供具体绘制图形的流程,

因为没有人知道究竟需要绘制什么形状的图形。
每个图形都拥有绘制自己的能力,这个能力可看作是该类具有的行为,如果将子类的对象统一看作是父类的实例对象,这样当绘制图形时,简单地调用父类也就是图形类绘制图形的方法即可绘制任何图形,这就是多态最基本的思想。图6.7的图形类中绘制图形的方法很好地体现了面向对象的多态思想。
例6.1定义一个add方法,用来计算两个数的和,该方法中有两个形参,但在方法体中,其中的一个形参x执行加y操作,并返回x;在main方法中调用该方法,为该方法传入定义好参;最后分别显示调用add方法计算之后的x值和实参x的值。代码如下:

 

例6.2定义一个change方法,该方法中有一个形参,类型为数组类型,在方法体中,改变数组的索引0、1、2这3处的值;在main方法中定义一个一维数组并初始化,然后将该数组作为参要传递给change方法,最后输出一维数组的元素。代码如下 

例6.3定义一个add方法,用来计算多个int类型数据的和,在具体定义时,将参数定义。类型的不定长参数:在main方法中调用该方法,为该方法传入多个 iat类型的数据,并输出计意果。代码如下:

 

 

                                                                  构造方法

在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自造方法。
构造方法的特点如下:

(1)构造方法没有返回类型,也不能定义为void。
(2)构造方法的名称要与本类的名称相同。
(3)构造方法的主要作用是完成对象的初始化工作,它能把定义对象的参数传给对象

例6.4创建猎豹类,用成员方法实现猎豹的行为。

 

例6.5创建一个图书类,将构造方法设为私有,这时如果需要创建图书类的对象,只能定义一个static方法,并调用该静态方法生成图书类的对象

 

局部变量


如果在成员方法内定义一个变量,那么这个变量被称为局部变量。 扫一扫,看
局部变量在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操
作或被初始化,否则会出现编译错误。

例如,在项目中创建一个类文件,在该类中定义getName)方法并进行调用例6.6在项目中创建CreateObject类,在该类中创建对象并在主方法中创建对象。

 

例6.6在项目中创建CreateObject类,在该类中创建对象并在主方法中创建对象。

 

 

例6.7在项目中创建TransferProperty类,在该类中说明对象是如何调用类成员的。

 

 

例6.8创建Book2类,定义一个成员变量name并赋初值,在定义一个成员方法showName输出方法name中的值

 

 

例6.9在Book3类的方法中,使用this关键字

 

例6.10我去买鸡蛋灌饼,我要求加几个蛋时,烙饼大妈就给饼加几个蛋,不要求的时候就只加一个蛋。创建鸡蛋灌饼EgeCake类,创建有参数和无参数构造方法,无参数构选方法调用有参数实现初始化。

 

例6.11创建一个水池类,创建注水方法和放水方法,同时控制水池中的水量

 

例6.12建Soiolisible类, 包含一个静奇院力一事意自以只多意,在构造方法中给两个变重起初值,然后分别实例化两个不同的对象。

 

例6.13将π的值赋给静态常量PI,使用PI计算圆类的面积和球类的体积

 

例6.14不创建对象,直接使用静态方法

 

 

例6.15创建静态代码块,非静态代码块,构造方法,成员方法,查看这几处代码的调用顺序

 

 

例6.16在项目创建 TestMain 类,在组方法中编写以下代码

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值