第六章 面向对象编程基础总结

目录

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.1        面向对象概述

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

6.1.1        对象

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

6.1.2         类

        不能将所谓的一个事物描述成一类事物,如一只鸟不能称为鸟类。如果需要对同一类事物统称,就不得不说明类这个概念。
        类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称,如鸟类、家禽类、人类等。类是构造对象时所依赖的规范,如一只鸟具有一对翅膀,它可以用这对翅膀飞行,而基本上所有的鸟都具有翅膀这个特性和飞行的技能,这样具有相同特性和行为的一类事物就称为类,类的思想就是这样产生的。

类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。

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

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

1.封装

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

2.继承

        类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。关联主要描述两个类之间的一般二元关系,例如,一个百货公司类与销售员类就是一个关联,学生类与教师类也是一个关联。两个类之间的关系有很多种,继承是关联中的一种。
        继承性主要利用特定对象之间的共有属性。例如,平行四边形是四边形,正方形、矩形也是四边形,平行四边形与四边形具有共同特性,就是拥有4条边,可以将平行四边形类看作四边形的延伸,平行四边形复用了四边形的属性和行为,同时添加了平行四边形独有的属性和行为,如平行四边形的对边平行且相等。这里可以将平行四边形类看作是从四边形类中继承的。

3.多态

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

6.2     类与对象

        在6.1.2节中已经讲过类是封装对象的属性和行为的载体,Java中定义类使用class关键字,其语法如下:

class 类名称 {
//类的成员变量
//类的成员方法

}

6.2.1      成员变量

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

数据类型 变量名称[=值];

        其中,[=值表示可选内容,即定义变量时可以为其赋值,也可以不为其赋值。
        为了了解成员变量,首先定义一个鸟类,成员变量对应于类对象的属性,在Bird类中设置4个成员变量,分别为wing、claw、 beak和feather,分别对应于鸟类的翅膀、爪子、喙和羽毛。
例如,在项目中创建鸟类Bird,在该类中定义成员变量。

public class Bird {
String wing;              //翅膀
String claw;             // 爪子
String beak;             //喙
String feather;          //羽毛
}

        Bird 类中定义了4个成最必量 层族图的来期得有了不建义尖,Bird是类的名称。同时在
类中定义了4个成员变量,成员变量的类型可以设置为Java中合法的数据类型,其实成员变量就是普通的变量,可以为它设置初始值,也可以不设置初始值。如果不设置初始值,则会有默认值。Java中常见类型的默认值如表6.1所示:

6.2.2        成员方法

成员方法对应于类对象的行为,它主要用来定义类可执行的操作,它是包含一系列语句的代码块。

1. 成员方法的定义

定义成员方法的语法格式如下:

[权限修饰符] [返回值类型] 方法名( [参数类型 参数名] ) [throws 异常类型] {
...//方法体
return 返回值;
}

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

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

public void showGoods() {
    System.out.print1n("库存商品名称:");
    System.out.println(FullName);
}

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

public int showGoods() {
System.out.println("库存商品名称:");
return 1;
}

2. 成员方法的参数

        调用方法时可以给该方法传递一个或多个值,传给方法的值叫做实参,在方法内部,接收实参的变量叫做形参,形参的声明语法与变量的声明语法一样。形参只在方法内部有效。Java中方法的参数主要有3种,分别为值参数、引用参数和不定长参数。

(1) 值参数

        值参数表明实参与形参之间按值传递,当使用值参数的方法被调用时,编译器为形参分配存储单元,然后将对应的实参的值复制到形参中,由于是值类型的传递方式,所以,在方法中对值类型的形参的修改并不会影响实参。

例6.1   定义一个add方法,用来计算两个数的和,该方法中有两个形参,但在方法体中,对其中的一个形参x执行加y操作,并返回x;在main方法中调用该方法,为该方法传入定义好的实参;最后分别显示调用add方法计算之后的x值和实参x的值。

代码如图所示:

运行结果如图所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值