Java程序设计基础-面向对象
第05章 Java面向对象程序设计(4学时)

5.3.2 使用对象
可使用对象中的成员变量和方法,通过圆点运算符进行访问。如: class TestA { int x; int y; public TestA(int x, int y ) { this.x = x; this.y = y; } public TestA() {this(0,0);} public void setX(int x) {this.x = x ; } public void setY(int y) { this.y = y; } } 创建对象: TestA p1 = new TestA(),p2 = TestA(2,3); 使用对象: p1.x=10; p2.y=4; p1.setY(2);
5.2.4 成员变量
3.private . 若类中一个成员变量被定义为private,则表示只有本 类自身中成员才能访问,其它任何类(无论是否在同一个 包)的对象,均不能对该成员变量进行读写。 4.缺省 . 若类中一个成员变量定义时,上述三个控制符都缺省不 写,则表示同一个包中的任何类的对象,都可以对该成员 变量进行读写。 5.static 类成员变量与实例成员变量 . 在定义一个成员变量时,若限定它为static,则表示该成员 变量是一个类成员变量。 类成员变量可简单理解为:只要该类定义好,经编译后, 该变量就一直存在。
第5章 Java面向对象程序设计
5.1 基本概念
5.1 基本概念
1. 类 类是面向对象程序设计的核心概念之一,一个用户自定义的类 就是一个新的数据类型,类是相同或相似的各个事物间共同特性 的一种抽象。 2. 对象 任何事物均是对象。 将所有相同或相似的对象特性进行抽象,就形成了类,类是对象的 一种模板。 3. 属性 一个对象的属性是能够被外界或对象所处的环境所感知或操纵的 数据或状态。
《面向对象程序设计——Java》核心课程标准

《面向对象程序设计——Java》核心课程标准一、课程性质与定位本课程是专业核心课程,也是后续多门专业课的基础课程。
其功能主要是通过课堂教学和实践教学相结合,使学生能够深入理解面向对象概念,掌握面向对象程序的设计思路和流程,具备Java程序编写的基本方法和基本技能,培养学生利用JCreator、Net Beans、Eclipse等开发环境进行Java程序的分析、设计、编码和测试的能力,培养学生科学的思维方法,灵活运用知识的能力,实验操作能力,为后续Java高级编程、Android和Java Web的学习打下坚实的基础。
二、课程设计理念本课程强调对学生面向对象思想和规范编程能力的养成,按照理实一体、课内外互补、课堂教学与培优工程相结合的课程设计指导思想,以任务或项目为载体组织教学内容,采取讲练结合、微课教学、视频辅导、单元测试、赛练融合等多种教学形式和手段,突出学生的主体地位,在校内实训室完成所有教学环节,实现“教、学、做”的有机融合;通过班级讲授、团队学习、个体辅导、展示交流、技能大赛等手段,实现从模仿到应用到创新的高职学生递进式培养。
三、课程目标(一)总体目标通过本课程的学习使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程语言Java的基础知识、类和对象、Java工具类、IO流等知识;以培养学生实际编写Java程序的主要技能为主线,重点围绕Java基础和面向对象思想等内容培养学生编写规范Java代码的技能,并使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发过程的规范要求强化学生的职业道德意识和职业素质养成意识,为学生后续课程学习奠定基础。
(二)具体目标1.能力目标培养学生Java程序基本的分析、设计、编码和测试能力;培养学生自主、开放的学习能力;培养学生良好的编程习惯和准确的语言表达能力;培养学生一定的科学思维方式和分析判断解决问题的能力;培养学生良好的自我表现、与人沟通的能力;培养学生良好的职业道德和勇于创新、敬业乐业的工作作风;培养学生的团队合作意识。
chap1Java与面向对象程序设计

2. 面向对象的设计 形成OOD模型 • 在OOA模型基础上引入界面管理、任务管理和
数据管理三部分内容。
• 界面管理负责整个系统的人机界面的设计
• 任务管理负责处理并行操作之类的系统资源管 理功能的工作
• 数据管理负责设计系统与数据库的接口。 3. 面向对象的实现 • 选择一种合适的编程语言 • 实现各个类 • 集成 • 维护
对象的操作1 对象的操作2
打开
关闭
对象的操作n
对象的状态 静态属性 (变量)
颜色大小开 启
对象的操作3 换台
对象的操作
……
方法一方面把对象内部的变量包裹封 装保护起来,一方面与外部交互
• 对象的标志,一般是指对象名,用于区别同一类 的各个对象
• 由于对象是类的实例化,因此在程序中通常是先 定义类即定义同类对象的公共属性包括变量和方 法,然后再用对象名创建类的实例对象
现实世界
计算机世界 对象
映射
实体
抽象 实例化
抽象 概念世界
类
抽象数据向对象技术的核心概念之一。如上图所示, 对象就是现实世界中某个具体的物理实体在计算机 中的映射和体现。对象拥有各自的静态属性和相关 的操作。比如,现实世界中的电视机是一个实体, 有品牌、尺寸、颜色、开关、控制器等。
,最终形成一个广泛联系的可理解扩充维护更接近 问题本来面目的动态对象模型系统
• 对象:是现实世界的实体或概念在计算机中 的抽象表示。用来模拟组成或影响现实世界 问题的一个或一组因素。(下一节详细介绍)
• 面向对象程序设计的优点:
1. 对数据的封装提高了程序的可复用和可维护性 封 2. 由于封装,保护私有数据
第三阶段 面向对象的实现
进行具体的编程、 模块连接及测试
java面向对象程序设计简答题

一、Java面向对象程序设计概述Java作为一种非常流行的编程语言,其核心思想之一就是面向对象程序设计。
面向对象程序设计是一种程序设计范式,它将计算机程序视为一组对象的集合,每个对象都可以接收消息、处理数据,并将数据传递给其他对象。
Java语言通过类和对象的概念来实现面向对象程序设计,使得程序更加易读、易维护,并且具有良好的扩展性和复用性。
二、Java面向对象程序设计的基础1.类和对象Java中的类是一种模板,它定义了对象的状态和行为。
对象是类的实例,它具有类所定义的属性和方法。
通过定义类和创建对象,可以更好地组织和管理程序的逻辑结构,实现代码的复用和扩展。
2.封装封装是面向对象程序设计的重要特性之一,它将数据和方法封装在类的内部,通过访问控制符来控制对象对其内部状态的访问。
这样可以隐藏对象的内部细节,避免外部代码直接依赖于对象的实现细节,从而提高代码的可维护性和安全性。
3.继承继承是面向对象程序设计的另一个重要特性,它允许一个类继承另一个类的属性和方法,并在此基础上进行修改和拓展。
通过继承,可以在不改变已有代码的情况下为现有类添加新的功能,提高代码的复用性和扩展性。
4.多态多态是面向对象程序设计的一个重要概念,它允许不同类的对象对同一消息做出不同的响应。
通过多态,可以实现接口的统一调用、代码的灵活性和可扩展性。
三、Java面向对象程序设计的实践1.使用类和对象在Java中,使用类和对象是编写程序的基本操作。
首先需要定义类,然后创建对象,并通过对象调用类中的方法来实现程序的功能。
定义一个名为Student的类,然后创建多个Student对象,并调用对象的方法来实现学生管理系统。
2.封装的应用封装可以将数据和行为封装在一个类中,通过访问控制符来控制对对象的访问。
在银行系统中,可以定义一个Account类来封装账户的信息和相关操作,避免外部直接操作账户的内部数据,提高系统的安全性。
3.继承的应用继承可以实现类的复用和扩展,通过子类继承父类的属性和方法,并在此基础上进行修改和拓展。
Java的面向对象编程思想

Java的面向对象编程思想Java是一门流行的编程语言,其被广泛应用于各种领域。
与其它编程语言相比,Java有其独特的面向对象编程思想。
面向对象编程强调的是程序的对象,而不是程序的函数或指令。
这种编程思想使得Java在软件开发中越发重要。
一、什么是面向对象编程思想?在Java编程中,面向对象编程思想是基础。
面向对象编程(OOP)是一种程序设计模式,其中程序看作是一系列对象,每个对象都可以接收数据、处理数据和传递数据。
OOP将数据和方法捆绑在一起,使得数据和方法能够共同操作,对象有助于降低软件的复杂性并强化代码的重用性。
二、Java的基础数据类型Java有两类数据类型:基本数据类型和引用数据类型。
基本数据类型代表的是单一值,例如布尔型、字符型、整型和浮点型。
引用数据类型代表的是对现实世界中的事物进行的抽象。
这些事物可以指对象、集合和数组等复杂的数据结构。
三、Java的面向对象编程实现Java编程中,作为程序员,首先要学会如何写类。
一个类表示了一个对象的行为和属性,同时还定义了该对象的方法。
例如,我们可以定义一个名为Person_class的类,其中包含属性name、age和gender。
我们还可以定义一个set_name()方法来设置该对象的name属性。
Java通过继承实现代码重用。
通过继承,子类可以从父类继承属性和方法。
这使得代码可重用性更高。
子类可以通过继承获得父类的方法,并且还可以添加新的方法和属性。
Java中,一个类只能继承一个父类,但是可以实现多个接口。
Java还支持多态。
Java中,多态指对象可以具有多种形式,可以是父类或子类的对象。
这使得代码可以更加灵活。
多态性可以通过向上转型、方法重载和方法覆盖来实现。
四、Java的封装封装是OOP的基本概念之一,它是指隐藏对象的内部细节,同时只提供公共API以供外部使用。
Java中的封装通常通过访问控制符来实现。
Java的访问控制符有public、private、protected和default。
java语言程序设计基础篇第八版复习题答案

java语言程序设计基础篇第八版复习题答案Java语言程序设计基础篇第八版复习题答案# 开始语复习题是检验学习效果的重要手段,以下是针对《Java语言程序设计基础篇第八版》的一些复习题答案,旨在帮助同学们巩固和检验所学知识。
# 复习题及答案1. 简述Java语言的特点。
答案:Java是一种面向对象的编程语言,具有跨平台性、安全性、健壮性、多线程等特点。
它通过Java虚拟机(JVM)实现“一次编写,到处运行”的口号。
2. 什么是面向对象编程(OOP)?答案:面向对象编程是一种编程范式,它使用“对象”来设计软件,这些对象可以包含数据(属性)和代码(方法)。
OOP的核心概念包括封装、继承和多态。
3. 解释Java中的封装、继承和多态。
答案:- 封装:隐藏对象的内部状态和实现细节,只暴露有限的操作界面。
- 继承:允许一个类(子类)继承另一个类(父类)的属性和方法。
- 多态:允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
4. 描述Java中的基本数据类型及其范围。
答案:Java中的基本数据类型包括:- `byte`:8位有符号整数,范围从 -128 到 127。
- `short`:16位有符号整数,范围从 -32,768 到 32,767。
- `int`:32位有符号整数,默认类型,范围从 -2^31 到 2^31-1。
- `long`:64位有符号整数,范围从 -2^63 到 2^63-1,必须以 L 或l 结尾。
- `float`:32位单精度浮点数。
- `double`:64位双精度浮点数,默认浮点数类型。
- `char`:16位Unicode字符。
- `boolean`:只有两个可能的值:true 和 false。
- `void`:表示没有任何值。
5. 什么是Java的自动装箱和拆箱?答案:自动装箱是Java自动将基本数据类型转换为对应的包装类的过程,例如将`int`转换为`Integer`。
java基础编程 第四章 面向对象(下) 案例
案例4-1 super访问父类成员变量一、案例描述1、考核知识点编号:029004003名称:super关键字2、练习目标➢掌握使用super关键字访问父类成员变量的方法3、需求分析子类可以继承父类的非私有成员变量,如果在子类中修改了继承自父类的成员变量的值,再想要访问父类的该成员变量时,可以通过super.成员变量来实现。
为了让初学者熟悉super关键字的用法,本案例将分别设计Fu类及其子类Zi,并在Zi类的方法中使用super关键字访问Fu类的成员变量。
4、设计思路(实现原理)1)编写一个Fu类,在类中定义无参构造和一个初始值为20的num成员变量。
2)Zi类继承Fu类,在子类中对num值进行了修改,同时在子类中定义无参构造和一个无返回值的method()方法,method()方法中使用super关键字调用了Fu类的num成员变量。
3)定义测试类Example03。
二、案例实现1、编写Fu类及其子类Zi,在Zi类中使用super关键字调用Fu类成员变量,代码如下class Fu {Fu() {}int num = 20;}class Zi extends Fu {Zi() {}int num = 30;// 修改num的值void method() {System.out.println("method");// super关键字调用父类成员变量System.out.println("Fu类中num值为:" + super.num);System.out.println("Zi类中num值为:" + num);}}2、定义测试类Example03,代码如下:class Example03{public static void main(String[] args) {Zi z = new Zi();z.method();}}运行结果如图4-3所示。
Java基础课件-面向对象程序设计PPT
Set接口
无序、不可重复的集合, HashSet、TreeSet等实现类
Map接口
键值对形式的集合, HashMap、Hashtable等实现 类
迭代器和遍历集合
1
增强fo r循环
2
简化集合遍历的语法,遍历数组和集
合
3
迭代器模式
通过迭代器访问集合元素,实现集合 的遍历
集合遍历算法
Java 8引入的Stream API提供丰富的 集合遍历和处理方法
多线程编程
多线程编程可以提高程序的效率和响应性。我们将探索Java提供的多线程机 制,学习线程的创建、同步和互斥等关键概念。
Java基础课件-面向对象程 序设计PPT
本课件旨在介绍Java基础知识和面向对象程序设计的概念。我们将深入讨论 Java类与对象、封装、继承、多态,以及其他关键主题,一起来学习吧!
Java基础概述
1 Java语言特点
简洁、面向对象、可移 植、高性能
2 开发环境准备
JDK安装、IDE选择、 环境变量配置
代码分析、编译器指令、 配置文件生成等
通过元注解为注解添加 元数据和其他信息
Java字符串和日期时间处理
字符串处理
字符串连接、分割、截取等常 用操作
日期时间处理
日期格式化、获取时间戳、计 算日期差等
正ห้องสมุดไป่ตู้表达式
文本模式匹配和替换的强大工 具
Java集合框架
List接口
有序、可重复的集合, ArrayList、LinkedList等实现 类
构造方法
对象实例化时执行的特殊方法
成员变量和成员方法
1
成员变量
在类中定义的属性,代表对象的状态
Java基础第3讲面向对象程序设计(课时2)
二、面向对象概念:类与对象
二、面向对象概念:类与对象
3、类与对象间的关系
对象
实例化
抽象
类
主要内容
一、面向对象概念:类与对象 二、面向对象概念:类与对象 三、类的定义 四、面向对象的基本特征 五、抽象类、接口 六、面向对象设计原则 七、小结 八、课程实训
三、类的定义 1、定义类 语法如下:
实例 实例
三、类的定义 2、构造方法:是提供对象初始化的专 用方法,不能被显示地直接调用。
1)、在一个类中与类同名的方法叫构造 方法,系统在产生对象时会自动执行 2)、构造方法通常用于定义一些初值或 与类同名而 其他准备工作 不是与java 3)、一个类可以有多个构造函数 (重载), 文件同名。 根据参数的不同决定执行哪一个 实例 4)、如果程序中没有定义构造方法,则创 造实例时使用的是缺省方法,它是一 个无内容的空方法
类派生过程中,重新改写父类的方法----覆盖
例如:声明三个同名方法area求圆、矩形、和三角 形的面积
3.0
public double area(double r)
类
2.0 ,3.0 public double area(double a , double b) 3.0 ,4.0 ,5.0
public double area(double a , double b , double c)
三、类的定义
定义在所有方法之外 3、声明或定义类的方法 的变量是类的成员变 量,定义在方法之内 声明成员方法的格式为 : [<修饰符>] [static] <返回值类型 > <方法名> ([< 的变量是普通变量。
参数列表>]) { [<方法体>] } 其中,〈修饰符〉和成员变量的修饰符一样, 含义也相同。 例如: public void SetDate(int y, int m, int d){...}
(2024年)《Java面向对象程序设计》教案
01
课程介绍与目标
2024/3/26
3
Java语言概述
2024/3/26
Java语言的历史与发展
01
介绍Java语言的起源、发展历程以及在不同领域的应用。
Java语言的特点与优势
02
阐述Java语言跨平台、面向对象、安全性等特点,以及其在软
件开发中的优势。
Java语言的核心技术
03
简要介绍Java语言的核心技术,如JVM、Java类库、Java API
接口是一种特殊的类,它只包含方法的声明,不包含方法的实现。
抽象类的定义
抽象类是一种特殊的类,它不能被实例化,只能被继承。抽象类中 可以包含抽象方法和非抽象方法。
接口与抽象类的区别
接口只能包含方法的声明,而抽象类可以包含方法的声明和实现; 接口可以被多继承,而抽象类只能被单继承。
16
内部类与匿名内部类
关键字
Java语言中预定义的、有特殊含义的单词,不能作为标识符使用 。
数据类型
Java中的数据类型分为基本数据类型和引用数据类型,基本数据 类型包括整型、浮点型、字符型和布尔型。
2024/3/26
9
运算符与表达式
运算符
用于进行各种运算的符号,如算术运算符、关系运算符、逻辑运算符等。
表达式
由运算符和操作数组成的算式,用于计算并返回结果。
提供了操作日历字段(如年、月、日、时、分、秒)的方 法,可以获取和设置日期时间。
两者比较
Date类主要用于表示日期时间,而Calendar类则提供了 更丰富的日期时间操作方法,如计算两个日期之间的差值 、设置时区等。
20
集合框架类库
Java集合框架主要包括接口(如 Collection、List、Set、Queue、 Deque等)和实现类(如ArrayList、 LinkedList、HashSet、TreeSet等) 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问修饰符名称
说明
public
可以被任何类访问
可以被同一包中的所有
protected
类访问
可以被所有子类访问
private
只能够被当前类的方法 访问
default(无访问修饰符)
可以被同一包中的所有 类访问
备注
子类没有在同一包中也 可以访问
如果子类没有在同一个 包中,也不能访问
在继承的体系中,访问看类型,调用看对象,在案例56中,当一个Crucian对象的类型被定义成Fishes时,这个 对象只能访问Fishes所拥有的属性和方法,但是实际方法 调用则会到该对象的定义类中查找,如果该方法在这个对象 的类中定义了,则会调用这个方法,否则调用Fishes类中 定义的该方法。从案例5-6的toString()方法的输出就可以 得出该结论。
图5-2 文件中的包结构
在开发的过程中,使用恰当的包结构、包名称和类 名称,可以让自己和其他开发人员快速地了解项目并且 使用你的类。所以,平时要培养这种命名思想,合理地 命名包和类名。
2.访问修饰符
在Java中有4种访问修饰符:public、protected、 private和default,这4种访问修饰符的控制范围是不 同的,如表5-1所示。
通过表5-1可知,当访问修饰符是public的时候,所有 的类都可以访问,就是说这是完全公开的;当用protected 修饰的时候只能被同包下的类和子类所访问(子类的概念在 5.4节中会详细介绍);如果是使用private,则只有当前类 可以访问;对于没有修饰符限制的,我们称之为缺省修饰符, 这种方法或者属性只能被本包内的其他类所使用,如果其子 类不在本包内,也不可以使用。
在Java中继承使用extends关键字修饰,其语法如 下:
public class A extends B { }
u 案例5-6 鱼的继承 运行结果 Nhomakorabea图5-9所示。
图5-9 运行结果
在java中一个类文件有且只能有一个公共类,即用 public修饰的类,但是非公共类则可以拥有很多个。如 案例5-6所示,在该类文件中,仅含有一个FishDemo公 共类,非公共类则如Fishes类及其子类一样可以拥有好 多个。实际开发时,不建议使用这个方式,可以将每一 个类单独命名创建对应的类文件,然后使用import关键 字引用即可。
继承的思想如图5-8所示。
图5-8 鱼类继承图
在面向对象中,继承的思想就如图5-8所示,如果 对象有相同的属性和行为,那么就归为一类,当这种归 类还可以延伸时,则继续分类,直到细化至需要的层级。 这种层级关系就是继承。在继承的概念中,结合图5-8, 鲫鱼是淡水鱼类的子类,淡水鱼类是鲫鱼的父类,同时 也是鱼类的子类。在Java中,所有类型的共同父类都是 Object。一定要注意,继承是“is a”的关系,绝非 “like a”的关系。
1.包
包是Java提供的用于解决命名冲突的一种机制,其 采用了属性目录的存储方式,有效地解决了命名冲突的 问题。功能相似或相关的类或接口(本章5.4节介绍) 组织在同一个包中,便于类的查找和使用,同时可以限 定拥有包的访问权限的类才能访问包中的类。Java的包 目录如图5-1和图5-2所示。
图5-1 编辑器中的包结构
1.抽象类
在实现继承关系的时候,有时候可能会用到抽象类, 而抽象类的标志就是该类拥有抽象方法。抽象类就是为 了继承而存在的,它让子类去实现对应的功能,而其本 身仅提供这些方法的获取通道。在大多数场景下,基类 无需提供方法实现,即方法体,因该方法可能根本无需 用到。
图5-3 对象的内存分配
在Java中,当声明一个变量的时候,会在内存中初 始化一块地址用于存放这个声明的变量的指向地址,如 果这个变量没有被初始化,则这块地址为空值。在案例 中使用new Wolfdog()的时候,会在内存中再分配一块 内存用于存放这个对象,然后将这块地址的位置赋值给 这个变量。
在初始化之后,就可以使用对象调用该对象的行为, 即方法。方法的调用方式如下:
所以在实际的开发过程中,封装的意义非常重大, 将需要封装的封装,将需要暴露的公开,这样不仅便于 开发与维护,也便于调用者的使用,不会因为不小心修 改了数据导致本该可以预期的调用结果变得无法预测。
5.4 继承
继承是面向对象的另一大特性,通过封装可以隐藏 实现,通过继承则可以更好地归类并区分。
生活中的继承一般是指财产的继承,这与面向对象 中所说的继承并不等价。人类在对事物的认知过程中将 相同的事物分门别类,例如,鲫鱼属于鲫鱼类,鲫鱼类 属于淡水鱼类,淡水鱼类又归属于鱼类。从面向对象的 思想来看,鱼类就是鱼这种类型的统称,只要是鱼类都 会有鱼的特征,但是具体到鲫鱼和武昌鱼,它们又有所 不同。从面向对象的角度来看,鲫鱼和武昌鱼则继承自 鱼类,因为它们同属于鱼类,有鱼的特点,但是每种鱼 又有各自不同的特点。
对象名.方法名(传入参数列表);
u案例5-2 类的使用 运行结果如图5-4所示。
图5-4 运行结果
在案例5-2中对变量做了声明、 初始化和方法调用,方法的调用可以 根据方法签名调用,如果有返回值还 可以定义相应的类型来接收。具体实 例如案例5-3所示。
u案例5-3 方法调用及返回值 运行结果如图5-5所示。
构造函数一般是用来初始化类的成员变量的,构造 的过程也是给类中变量赋值的过程。构造函数没有返回 值类型,并且其以类名为方法名称。
构造函数的格式如下:
访问控制符 类名 { 构造函数体;
}
5.3 封装
在面向对象中,封装是指无须关注实现,你只需要 知道那些已经包装好的类和方法提供的逻辑,可以实现 对应的逻辑即可。
修饰符 返回值类型 方法名称(参数类型1 参数名称,参数类型2 参数名称,…) {
方法体; }
其中,修饰符、返回值类型和方法名称是必须有的, 而一个方法是可以没有传入参数的。
修饰符有4种类型:public、private、protected 和default,用于限制访问权限。返回值类型在有返回值 的时候必须声明,其类型与返回值的类型一致。
5.2.2 类的使用
类就是对对象的抽象,用于描述一组对象共同的属性 和行为。在Java中,类可以定义成员变量和成员方法,这 些属性就是用于描述对象的属性,也就是对象的特征,方 法则用于描述对象的行为。在定义类的时候,使用class 关键字进行声明。
1.方法
方法即是行为。如案例5-1中的方法,狼狗叫就是 行为。在Java中,一个方法的定义格式如下:
不仅是在方法层面可以封装,一个对象的属性也可 以封装。
u案例5-5 属性封装 运行结果如图5-7所示。
图5-7 运行结果
在案例5-5中,使用了public和private两个访问修 饰符修饰People的属性,从代码可以看出,当使用 private修饰的时候,只能使用set方法去设置属性值, 使用get方法去获取属性值;当使用public的时候,则 不仅可以使用set和get方法去设置与获取,还能通过 “对象.属性名”的方法去设置与获取,这对于程序来说 是非常恐怖的事情。例如在案例5-4中,假定将3个期限 的基准利率设置为LoanRate属性,当这个属性是public 的时候,意味着所有人都可以来修改这个属性,那么这 样计算出来的利率将会无法控制。
在Java中,继承的特性如下。
(1)继承关系是传递的。如果A继承了B,B继承了C, 那么A继承C。
(2)继承简化了人们对事物的认识和描述,能清晰体现 出相关类的层级结构关系。
(3)继承提供了软件复用功能。若A继承了B,那么A就 无需再描述B已经描述的特征,只需要将自己独有的属性 描述出来即可。这大大减少了代码和数据冗余,并且增 强了程序的重用性。
5.2 类的概念
面向对象编程是通过让程序中对事物的描述与其在 现实生活中的形态保持一致,这种思想与人类的归类思 想一致。面向对象以此抽象出两个概念:对象和类。
5.2.1 什么是类
在Java中,类是指一类具有相同属性和具备相同功 能的事物,这类事物有着相同的属性和行为。例如鱼都 有鱼鳞和鱼鳍,都会游泳,都会用腮呼吸。鱼鳞和鱼鳍 就是属性,会游泳和会用腮呼吸则是行为(方法)。
方法名称是一个方法的名字,例如狼狗会叫,则定 义方法bark,可以说明这是狼狗叫的行为;狗会吃东西, 可以定义方法为eat,说明这是狼狗吃东西的行为。传 入参数可有可无,但如果有,必须说明类型,多个传入 参数使用逗号“,”隔开。
方法名称和传入参数是方法的签名,在一个类中是 不允许有两个方法签名相同的方法的。
5.1 面向对象概念
面向对象是一种符合人类思维习惯的编程思想。在 现实生活中,人们倾向于将不同的事物进行分类,将具 有类似属性的事物归为一类,方便记忆与理解。在程序 中,通过对象来映射现实生活中的事物,使用对象间的 关系来描述事物间的关系,我们便将这种思想称为面向 对象。
面向对象编程因其关注的是对象,而非过程,这使 得其可以更加灵活和便于理解。使用不同的对象去处理 不同的事物,在处理问题时可以通过不同的对象相互协 调,快速灵活地完成功能的开发。同时,如果相应的规 则改变了,仅仅需要修改对应的对象即可,便于开发和 维护。
在面向对象编程中,封装又叫隐藏实现。如同手电 筒一般,只告诉你装好有电的电池打开开关就可以照明, 简单点就是只公开代码单元的对外接口,而隐藏该单元 的具体实现。
u案例5-4 方法封装 运行结果如图5-6所示。
图5-6 运行结果
如案例5-4所示,用户不需要知道细节,只需要传 入贷款期限和浮动比例,就可以直接获得贷款的执行利 率,这就是方法的封装。封装的好处在于某个方法只是 为了实现某个特定的功能,而这个功能仅仅供人使用, 但是使用者不可以也不需要修改代码逻辑。
封装是面向对象的三大特性之一,其优点如下。
(1)封装使得对代码的修改更加安全和容易。因为代码 是一个相对独立的单元,修改不会对其他的单元产生影 响。