Java软件开发基础 4. 面向对象的程序设计基础.

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

1 类的严谨定义格式如下: [ 类修饰符 ] class 类名 [extends 父类名 ] [implements 接口列表 ] { 数据成员 成员方法 } 类的严谨定义.
面向侧面的程序设计 方林博士 本文下载地址:
第3章 使用类和对象编程 软 件 学 院 朱士明 副教授.
第4章 Java中的几个关键字 Java 语言编程技术.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第四章 类与对象.
第3章 面向对象的编程技术.
第四章 类 和 对 象.
第四章 对象与类 掌握面向对象程序设计语言的特点 理解对象、类,类和对象的关系 掌握类,成员变量,方法的定义 掌握构造方法的定义
配合< Java面向对象程序设计>例子源代码一起使用
Java的面向对象程序设计.
Tool Command Language --11级ACM班 金天行.
Oracle数据库 Oracle 子程序.
第五章 Java面向对象编程基础 类:现实世界中实体的抽象集合。 5.1定义类 定义类的过程就是定义类的属性和服务的过程;
第14章 c++中的代码重用.
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
类与对象 Java 实用技术4 类与对象
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
第4章 类和对象 学习导读 本章着重介绍Java编程中类和对象等非常重要的概念。
第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.
第四章 Java面向对象程序设计.
JAVA 面向对象基础知识 主要内容: 1.面向对象基本概念 2.Java的类与对象 3.成员变量与封装 成员方法.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
动态规划(Dynamic Programming)
Java程序设计 第7章 对象和类.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第一章 函数与极限.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
C++复习3 ----类的继承与派生.
C#面向对象程序设计 $6 深入理解类.
VisComposer 2019/4/17.
Aspect Oriented Programming
分裂对象模型 C++ otcl.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第十一章 异常处理 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第四章 UNIX文件系统.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

Java软件开发基础 4. 面向对象的程序设计基础

4.1 面向对象基础 对象 对象的状态属性 对象的行为操作 某类事物的抽象。 对象间的关联和作用 对象蕴含着许多信息,可以用一组状态来表征。 对象内部含有对数据的操作,即对象的行为操作。 某类事物的抽象。 某类对象是对现实世界具有共同特性的某类事物的抽象。 对象间的关联和作用 面向对象技术正是利用对现实世界中对象的抽象和对象之间相互关联、相互作用的描述来对现实世界进行模拟,并且使其映射到目标系统中,对象之间存在相互关联和相互作用。 现实世界中复杂的对象是由许多小的、简单的对象组成的。客观存在的物体就是最基本的对象。不同的物体有共性,共性存在于个性之中,物体的个性又继承了共性。

面向对象软件的开发过程 面向对象的分析(OOA:Object Oriented Analysis) 这一阶段应由用户和开发人员共同完成。 面向对象的设计(OOD:Object Oriented Design) 将对OOA模型加以扩展,引入界面管理、任务管理和数据管理三部分内容,得到OOD模型,并对最初的OOD模型做进一步的细化分析、设计和验证。在明确各对象类的功能和组成时,充分利用已存在的、可获得的对象类或组件。 面向对象的程序设计和问题求解力求符合人们日常自然的思维习惯,降低、分解问题的难度和复杂性,提高整个求解过程的可控制性、可监测性和可维护性,从而达到以较小的代价和较高的效率获得较满意效果的目的。

面向对象的实现(OOP:Object Oriented Programming) 在较大型的开发项目中,通常设置专人专门负责管理所有的可重用资源,将这些资源组织成类库或其他的可重用结构。 面向对象的实现(OOP:Object Oriented Programming) 就是具体的程序编码阶段,主要任务如下: 选择一种合适的面向对象的编程语言; 用选定的语言编码实现详细设计过程; 用相关的公式、图表、说明和规则等对软件系统各对象与类进行详尽的 描述; 将编写好的各个类代码块根据类的相互关系集成; 利用开发人员提供的测试样例和用户提供的测试样例分别检验代码完成 的各个模块和整个软件系统。 在面向对象的开发过程中,测试工作可以随着整个实现阶段编码工作的深入而同步完成。 编程阶段完成后进入运行阶段。 将程序看做由一系列对象组成,而不是由一系列动作组成。 我们需要做的是将整个程序拆分成若干个不同的对象,由每个对象来完成特定的功能,而不再是将整个任务划分为子任务。

4.2 类 类的概念 类是对某类对象的抽象描述,将数据属性及其相关操作封装在一起的集合体,它是对象的模板或蓝图。每一个对象都含有特征与行为,将其中的共性进行抽象描述,就形成了类。 尺寸 型号 生产厂家 用户 打开 关闭 调频 调音

类的修饰符:用来说明类的属性,可分为访问控制符和非访问控制符两类。 类与对象的关系 类的定义格式 类声明 类体 类的修饰符:用来说明类的属性,可分为访问控制符和非访问控制符两类。 访问控制符 public:表示该类可以被任何对象或类来调用或引用,包括同一个包或 不同包中的类访问。一个程序中只能有一个公共类。

private:表示只能被该类的方法访问和修改,而不能被任何其他类、包括 该类的子类来获取和引用,这是系统默认的修饰符。 非访问控制符 abstract:抽象类。表示该类是无具体对象的抽象类,这是一种特殊的类 ,它不能实例化,即不能用new关键字来生成该类的对象,只能由其派生 子类。其抽象方法的具体实现也由继承该抽象类的子类来完成。 final:表示该类为最终类,不能再由它派生新的子类。 注意: 抽象类可以同常规类一样,具有数据和方法,包含抽象方法的类必须声明 为抽象类。 abstract和final不能修饰同一个类。 关键字 class extends:指明该类的父类(如果有的话) implements:用来引出接口,以供本类中使用,接口可以有多个

整个类的详细结构 类体 方法 用于完成变量(属性)的说明以及方法(行为)的定义与实现。 围绕着类的属性进行各种操作; 与其他的类或对象进行数据交流、消息传递等操作。 整个类的详细结构

4.3 成员变量 变量包括以下几种 成员变量的声明 修饰符 成员变量(Data field):也称为字段,定义在类中,是类成员的一部分,整个类都可以访问它。 方法或者代码块中的变量(local variable):即局部变量。 方法声明中的变量(parameter):也称为形式参数。 成员变量的声明 零个或多个修饰符 字段类型 字段名称 修饰符 缺省访问修饰符:同friendly修饰符,修饰的成员变量可以被同一包(package)中的任何类访问; [修饰符] 类型 成员变量名;

public:修饰的成员变量称为公共变量,可以被项目文件中的任何方法访问。 protected:修饰的成员变量称为保护变量,可以被有继承关系的类自由访问,即子类可以访问它;也可以由同一个包中的其它类访问。 private:修饰的成员变量称为私有变量,只能被定义它的类使用,而不能被其他任何类使用。这种方式通常是最安全的,在Java程序开发中通常使用该修饰符实现数据的封装; private protected:私有保护访问控制符。只允许该类本身以及子类访问,把同一个包中的其他类严格排除在外,使得成员变量更专有于具有明确继承关系的类,而不是松散组合在一起的包。 由于public成员变量不受限制,这易使类的对象引起不希望的修改,破坏系统的封装性,建议成员变量尽量不要使用public修饰符;

成员变量修饰符访问权限 static:修饰的成员变量又称为类变量,不加static修饰的成员变量又叫对象变量。对象变量依附于具体的对象实例,它的值因具体对象实例的不同而不同,而类变量为该类的所有对象所共享,它的值不因类的对象不同而不同。 修饰符 类 子类 其它类 同一个包 其它包 public  private  protected 默认修饰符 private protected

用该修饰符修饰的成员变量不是被保存在由该类创建的某个具体对象的存储单元中,而是被保存在该类内存区域的一个公共的存储单元中。 静态变量在类被载入时创建,只要类存在,静态变量就可见,该静态变量由该类所创建的所有对象共享。 所有的操作都是针对该内存单元。 访问方式如下: 实例:N个人顺次等待电梯并使用的例程 类WaitE的属性 电梯的位置 电梯运行速度 人所在的位置 人要去的目的地 对象名.成员变量名 类名.成员变量名

类的方法 获得电梯位置 获得电梯速度 构造方法

对于某个具体等待电梯的人的操作 打印等待时间 打印乘坐时间 创建并初始化(即此人在哪一楼层,要去往哪一楼层) 将电梯置位为该对象目前所在的楼层 将电梯置位为该对象到达的楼层

final:修饰的成员变量叫最终成员变量,亦即常量。 一开始创建该变量时将其设了一个初始值,在以后程序的运行过程当中,变量的值将一直保持这个值不变。 Java中的常量必须是类的成员。对于最终成员变量,任何赋值都将导致编译错误。因为常量在声明以后就不能改变其值,所以常量必须要初始化。无论是实例变量,还是类变量,都可以被说明成常量。final修饰符和static修饰符并不冲突。

2017/2/24 4.4 方法 概述 方法是类的主要组成部分,又称为成员方法,用来规定类属性上的操作,改变对象的属性与产生行为,实现类的内部功能的机制,接收来自其他对象的信息以及向其他对象发送消息。方法同时也是类与外界进行交互的重要窗口。 通常一个类由一个主方法和若干个子方法构成。主方法调用其他方法,其他方法间也可以互相调用,同一个方法可以被一个或多个方法调用。 方法实现子任务处理的原则和规律: 算法中需要细化的步骤、重复的代码以及重载父类方法都可以定义成类的方法; 方法应界面清晰、大小适中。 Java应用程序中,程序的执行从主方法即main方法开始,调用其他方法后返回到main方法,并在main方法中结束整个程序的运行。

定义格式 修饰符 方法头 方法体 public:公共方法,可被所有类访问; private:私有方法,只能被定义它的类、方法访问; protected:保护方法,可以定义它的类及其子类、同一个包中的其它类访问,该修饰符的目的就是为了使其他包中的子类可以访问父类中的成员变量和方法; abstract:抽象方法,仅有方法头而没有具体方法体的方法,所有的抽象方法必须存在于抽象类中; final:最终方法,不能被覆盖或重载;

变量 synchronized:可完成同步监控代理,被该修饰符修饰的方法,一次只能被一个线程使用,进而可以控制多个并发线程的访问; static:静态方法或类方法。属于整个类的方法,可通过类名直接调用; 变量 在方法体中定义的变量以及方法的参数称为局部变量,方法的参数在整个方法内有效,方法内定义的局部变量自它被定义的位置之后到方法体结束之间有效。 如何判断一个变量或方法定义为实例的还是静态的? 如果一个变量或方法依赖于类的具体实例,就应该定义为实例变量或实例方法;如果一个变量或方法不依赖于类的具体实例,就应该定义为静态变量或静态方法。 本应该声明为静态方法而声明为实例方法是常见的设计错误。

参数列表 是方法的输入接口,列出了一系列参数的形式,包括个数、类型和名称,这类参数只有在运行时才分配存储单元,被称为“形式参数”。 对于方法定义中的每一个参数必须合法,调用时必须由一个实参量与其对应,参量的个数、类型必须与对应的形参的个数、类型完全一致。 方法也可以没有参数。 方法不能嵌套定义。 返回值类型 可以是任意的Java类型,甚至可以是定义此方法的类或者方法可实现接口,如果方法没有返回值,则用void表示。 在区分多个同名方法时,编辑器不会考虑返回值类型,所以不能声明两个参数列表相同而返回值不同的同名方法。 当方法使用一个类名作为返回值类型时,返回对象的类型必须是返回类型指定的类或者它的子类。

方法的分类 方法的调用 throws异常列表 方法体 用户自定义的方法 标准方法 程序调用方法:需要程序书写专门的调用命令来调用的方法; 规定了在方法执行中可能导致的异常。 方法体 方法体是实现这个方法的代码段;当方法体是一个“;”时表示无方法体,该类没有实现。当且仅当方法的修饰符中有abstract或native时,方法才无方法体。 方法的分类 用户自定义的方法 标准方法 方法的调用 程序调用方法:需要程序书写专门的调用命令来调用的方法; 系统方法:运行过程中不需书写专门命令而由系统自动调用的方法。

方法的调用格式 实际参数列表是传递给方法的参数,可以是常量、变量或表达式,个数、类型、顺序应该与形式参数一一对应; 在类中调用类自身的方法可以直接使用该方法名称;否则需要使用前缀; 调用方法的执行过程是:首先将实际参数传递给形式参数,然后执行方法体,执行结束后从调用方法语句的下一句继续执行。 [对象引用名.]方法([实际参数列表])

方法表达式调用 方法语句调用 输出语句调用

参数 参数传递 指在Java语言中调用一个带有形参的方法时,完成所提供的实参与形参的传输结合的过程。 形参是方法声明中的变量清单; 实参(argument)是调用方法时传递给方法的实际值。 Java不允许将方法传递给方法,但是可以将对象传递给方法,然后调用这个对象的方法。 传递方式 传值:若方法参数为简单数据类型,将实参的值传递给形参,方法接受 实参的值,但是不能改变; 传引用:若方法参数是复合数据类型,则将对象的引用传递给方法。

参数名称 在参数的作用域内,参数的名称必须唯一。 参数名称可以和一个类的字段名称相同,如果这样使用,该参数被称为使这个字段遮蔽(shadow)。遮蔽的字段会使代码难以阅读。 在上述语句中,setOrigin方法的两个参数将该类的同名字段遮蔽,若 在方法体内部使用简单名称x和y,则表示引用参数,而不是引用该类的 字段。如果要访问字段,必须使用限定名称。 按照惯例,遮蔽只在设置特定字段的构造方法或者方法中使用。

任意数量的实参 当不知道有多少个特定类型的实参要传递给方法时,可以使用可变参数(vararg)。方法体中的代码将把参数作为数组来处理。 格式如下 最常用到可变参数的地方是输出方法,如 [修饰符] 返回值类型 方法名([形式参数列表,]最后一个参数的类型… 参数名称) public PrintStream printf(String format, Object… args)

特殊的方法调用——递归 递归是指用自身结构来描述自己、循环调用。例如: 递归方法有直接递归方法和间接递归方法。 递归方法调用涉及两个概念: 阶层 Fibonacci数列 递归方法有直接递归方法和间接递归方法。 方法体中又调用自身称为直接递归方法;方法体中调用的虽然不是自身,但是它间接调用了自身,称为间接递归方法。 递归方法调用涉及两个概念: 栈:数据依次入栈,后进先出。 递归方法调用数据的保留:每调用一次便分配一次局部变量,待调用结束局部变量就释放。但从递归过程的执行可以看出,上一次调用的执行尚未结束,下一次调用就开始了。所以递归调用的数据保留采用栈来解决。

1 fac(5) ? 2 fac(4) 3 fac(3) 4 fac(2) 5 fac(1) 1 fac(5) ? 2 fac(4) 3 fac(3) 4 fac(2) 由于n不等于1,所以连续执行4次fac(n-1) 第四次n=1,所以fac(1)=1,退栈一次,弹出栈顶数据。 1 fac(5) ? 2 fac(4) 3 fac(3) 6 5 fac(5) 120 再一次执行fac(n)=n*fac(n-1),得到fac(n)=6,退栈。 以后的步骤类似,最后一次执行,n为5,fac(4)=24,fac(5)=120

4.5 对象与构造方法 对象的创建 一个类可以创建多个实例对象,对象的生成包括声明、实例化和初始化。 对象的生命周期为:创建使用销毁回收。 语法格式 new后带小括号的类名称为构造方法。 默认的、最简单的构造方法是不带参数的。 执行操作 在指定类上创建了一个对象; 为该对象分配了引用内存空间; 执行由指定类所定义的构造方法,完成一系列初始化工作。 类名 对象名; 对象名=new 类名([参数列表]); 类名 对象名=new 类名([参数列表]);

构造方法 类创建对象时需要使用构造方法,以便为类所创建的对象一个合理的初始状态。 特点 注意:在初始化工作时如果没有给属性赋值,虚拟机会自动给它们赋予 相应数据类型默认的初值。 构造方法 类创建对象时需要使用构造方法,以便为类所创建的对象一个合理的初始状态。 特点 名字必须与它所在类的名字完全相同,并且不返回任何数据类型; Java中每个类都有构造方法,在new运算符完成操作前,构造方法立刻自动调用,用来完成初始化该类的对象; Java允许一个类中有若干个构造方法,但这些构造方法的参数必须不同。

构造方法实例:矩形类的构造 如果程序中没有显示的编写构造方法,则Java将为该类创建一个默认的构造方法。 重载经常用于构造方法,构造方法也可以继承。 注意 虽然编译器会自动为没有构造方法的所有类提供无参数的默认构造方法 ,但是这个默认构造方法会调用该类的父类的无参数构造方法。此时, 如果父类没有无参数构造方法,编译器就会指出问题。所以必须检查其 父类是否具有无参数构造方法。 当然,如果该类没有为它显式的定义父类,则它的隐式父类是Object类 ,该类的确具有无参数构造方法。 构造方法实例:矩形类的构造 属性: 矩形长 矩形高 矩形中心所在坐标点

坐标点类 横坐标 纵坐标 构造方法 矩形类构造方法

类中定义的其他方法 关键字this 在构造方法中,this引用当前对象,即被调用的构造方法所属的对象。通过使用this关键字,可以在构造方法中引用当前对象的任何成员。 对字段使用关键字this。这种情况的最常见原因是构造方法的参数遮蔽 了对象的成员字段。

对构造方法本身使用this 使用this关键字调用同一个类中的另一个构造方法,称为显式构造方法 调用(explicit constructor invocation)。格式如下: 编译器根据参数的数量和类型判断应该调用哪个构造方法。 如果存在,对另一个构造方法的调用必须是构造方法中的第一行。 this(参数列表);

用四个0值调用四个参数的构造方法 用两个0值和width、height值调用四个参数的构造方法

new 构造方法名([参数列表]).成员变量名 使用对象 引用成员变量:定义、创建及初始化一个对象以后,就可以引用该对象的成员变量。 类对象已经创建 创建对象与引用成员变量同时进行 注意,用这种语句来获取成员变量的方法,当执行完该语句之后,程序 再也不具有对创建出的该对象类的引用,因为程序从未把该引用存储到 任何位置。对象被解除引用,并且其资源被Java虚拟机回收。 对象名.成员变量名 new 构造方法名([参数列表]).成员变量名

new 构造方法名([参数列表]).成员方法名([参数列表]) 引用成员方法:定义、创建及初始化一个对象以后,就可以引用该对象的成员方法。 类对象已经创建 创建对象与引用成员变量同时进行 对象名.成员方法名([参数列表]) new 构造方法名([参数列表]).成员方法名([参数列表]) 常见的编程错误: --带有void关键字的构造函数 构造函数本身没有返回类型,当为构造函数提供了“void”返回类型时,它就不再是构造函数,而仅仅是一个普通的实例方法,该方法名字与构造函数相同。该错误并不会引起编译错误,而当需要创建实例的时候就会找不到相应的构造方法。

并非实例、类变量和方法的所有组合都被允许使用 对象的清除 当不存在对一个对象的引用时,该对象成为一个无用对象。Java的运行环境周期性的检测某个实体是否已经不再被任何对象所引用,如果存在,则收集并释放它占有的内存空间。 并非实例、类变量和方法的所有组合都被允许使用 实例方法可以直接访问实例变量和实例方法 实例方法可以直接访问类变量和类方法 类方法可以直接访问类变量和类方法 类方法不能直接访问实例变量和实例方法,它们必须通过对象引用。

数组名[下标]=new 类名([参数列表]); 4.6 复合数据类型数组 复合数据类型数组的定义和基本数据类型结构定义类似,步骤如下: 声明数组对象 创建,并初始化数组的长度 初始化每个数组中的元素(即对象) 经过以上步骤才为每个数组元素分配了存储空间,才可以引用复合数据类型数组中的元素。 类名 数组名[]; 类名 数组名=new 类名[数组的大小]; 数组名[下标]=new 类名([参数列表]);

实例:为某个班级创建一个学生类,并生成实例进行操作,判断是否能获得奖学金。 类的声明 分析学生类应该具有的属性 姓名 班级 平均分 家庭年收入

成员方法 获取姓名 获取班级 获取平均分 获取家庭年收入

通过复合数据类型数组在另一个类中生成4个学生对象 构造方法 采用带有三个参数的构造方法,为学生的三个属性进行初始化 通过复合数据类型数组在另一个类中生成4个学生对象

打印学生信息 判断是否有学生获得奖学金

修改器: 用于修改对象内部状态的实例方法; 一般说来,修改器都会修改对象中某个字段的值,作为一种约定,修改器方法的名称往往以“set”开头,加上需要修改的字段名称。 通常修改器方法的返回值为void类型,而它的参数是对象的新状态或对现有状态的改变量。 访问器: 只访问对象的状态信息,但不修改它们的实例方法; 访问器会返回对象中某个字段的值,作为一种约定,访问器方法的名称往往以“get”或“is”开头,加上需要访问的字段名称。 通常访问器方法没有参数,但必须有返回值。

面向对象程序设计方法的优点* 面向对象方法的特性 抽象性(Abstraction) 是具体事物一般化的过程,即对具有特定属性的对象进行概括,从中归纳出该类对象的共性,并从通用性的角度描述共有的属性和行为特征。 抽象使得系统能够抓住事物的实质特征,因此具有普遍性,可以使用在不同的问题中。 抽象包括以下两方面内容: 数据抽象:描述某类对象的共同属性 方法抽象:描述某类对象的行为特征 Java中,通过定义属性和行为来表述对象的特征和功能,通过定义接口来描述它们的地位以及与其他对象的关系,最终形成一个广泛联系的、可理解、可扩充、可维护、更接近于问题本来面目的动态对象模型系统。

封装性(Encapsulation) 继承性(Inheritance) 利用抽象数据类型将数据和基于数据的操作封装在一起,即把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。 封装的特点是使某类能建立起严格的内部结构,保护好内部数据,减少外界的干扰,以保证类自身的独立性,可工作在不同的环境中。 对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的错误影响,使软件错误局部化,进而大大减少查错和排错的难度。 继承性(Inheritance) 是面向对象程序设计中最具魅力的特色,是软件复用的一种形式,对降低软件的复杂性行之有效。使得程序结构清晰、降低编码和维护的工作量,提高了系统效率。 Java中的所有类都是通过直接或间接的继承java.lang.Object类得到。

采用对象但没有继承性的语言是基于对象的语言,不是面向对象的语言。 新类由已经存在的类(父类)生成,通过保留它们的属性和行为,并且根据新类自身的特色和要求加以修改,增加新的属性和行为。通过继承得到的类称为子类,被继承的类称为父类。 类继承就是子类继承父类的成员变量和方法,作为自己的成员变量和方法,就好像它们是在子类中直接声明的一样。当然,子类能否继承父类的变量和方法还有一定的限制。 子类从父类继承主要包括以下两方面: 属性 方法 继承的分类 单继承 多继承:子类从一个以上的父类继承,Java不支持多继承

多态性(Polymorphism) 指程序中同名的不同方法共存的情况下,Java根据调用方法时传送参数的多少及传送参数的类型来调用具体不同的方法,即可采用同样的方法获得不同的行为特征。在运行时自动选择正确的方法进行调用称为动态绑定(Dynamic Binding)。 多态性可提高程序的抽象程度,使得一个类在使用其他类的功能、操作时,不必了解该类的内部细节,只需明确它提供的外部接口。 多态的两种情况 覆盖(Override):子类对继承自父类的方法重新定义 重载(Overload):在同一个类中定义多个同名的不同方法

面向对象程序设计方法的优点 可重用性 可扩展性 可管理性 可自律性 可分离性 接口和消息机制