java面向对象特性

上传人:aa****6 文档编号:51023410 上传时间:2018-08-12 格式:PPT 页数:94 大小:506KB
返回 下载 相关 举报
java面向对象特性_第1页
第1页 / 共94页
java面向对象特性_第2页
第2页 / 共94页
java面向对象特性_第3页
第3页 / 共94页
java面向对象特性_第4页
第4页 / 共94页
java面向对象特性_第5页
第5页 / 共94页
点击查看更多>>
资源描述

《java面向对象特性》由会员分享,可在线阅读,更多相关《java面向对象特性(94页珍藏版)》请在金锄头文库上搜索。

1、Java面向对象特性伍淳华 北京邮电大学计算机学院JAVA语言概述理解面向对象的基本概念、面向对象的程序设计 方法掌握Java的面向对象特性用面向对象技术写Java程序学习目标JAVA语言概述理解方法重载和方法重写类变量和类方法的使用接口的使用难点和重点面向对象技术基础什么是面向对象l80年代初的定义:面向对象是一种新兴的程序设计方法,或者是 一种新的程序设计规范(paradigm),其基本思想是 使用对象、类、继承、封装、消息等基本概念来 进行程序设计。l其应用领域不仅仅是软件,还有计算机体系结构 和人工智能等。面向对象技术基础基本思想l从现实世界中客观存在的事物(即对象) 出发来构造软件系

2、统,并且在系统构造中 尽可能运用人类的自然思维方式。l软件开发是一种逻辑思维活动,其方法不 应该是一种超越人类日常的思维方式。面向对象技术基础对象的基本概念l客观世界的组成:-对象-对象之间的关系l对象:对象是系统中需要研究的任何事物, 它不仅能表示具体的事物,还能表示抽象的 规则、计划或事件。它是构成系统的一个 基本单位。一个对象由一组属性和对这组 属性进行操作的一组服务组成。 面向对象技术基础类的基本概念l把众多的事物归纳、划分成一些类是人类 在认识客观世界时经常采用的思维方法。 分类的原则是抽象。l类是具有相同属性和服务的一组对象的集 合,它为属于该类的所有对象提供了统一 的抽象描述,其

3、内部包括属性和服务两个 主要部分。面向对对象技术术基础础class Car int color_number; int door_number;int speed;void brake() void speedUp() ;void slowDown() 计算机中 的类现实生活 中的对象面向对象技术基础类的基本概念l在面向对象的编程语言中,类是一个 独立的程序单位,它应该有一个类名 并包括属性说明和服务说明两个主要 部分。l类与对象的关系:模具铸件类 实例化对象面向对象技术基础封装l 封装性就是把对象的属性和服务结合成一个独 立的相同单位,并尽可能隐蔽对象的内部细节, 包含两个含义: 把对象的全

4、部属性和全部服务结合在一起 ,形成一个不可分割的独立单位(即对象)。 信息隐蔽,即尽可能隐蔽对象的内部细节 ,对外形成一个边界或者说形成一道屏障, 只保留有限的对外接口使之与外部发生联系。面向对象技术基础封装l封装的原则在软件上的反映是:要求使对 象以外的部分不能随意存取对象的内部数 据(属性),从而有效的避免了外部错误 对它的“交叉感染”,使软件错误能够局 部化,大大减少查错和排错的难度。l可见性:对象的属性和服务允许对象外部 存取和引用的程序。面向对象技术基础继承l特殊类的对象拥有其一般类的全部属性与服务, 称作特殊类对一般类的继承。例如,轮船、客轮;人、学生。l多继承:一个类可以是多个一

5、般类的特殊类,它 从多个一般类中继承了属性与服务。例如,客轮是轮船和客运工具的特殊类。l在java语言中,通常我们称一般类为父类( superclass,超类),特殊类为子类(subclass)。 面向对象技术基础消息l消息就是向对象发出的服务请求,它应该包含下 述信息:提供服务的对象标识、服务标识、输入 信息和回答信息。System.out.println(“hello”);point.draw();l服务通常被称为方法或函数。面向对象技术基础多态性l对象的多态性是指在一般类中定义的属性或服务 被特殊类继承之后,可以具有不同的数据类型或 表现出不同的行为。l这使得同一个属性或服务在一般类及其

6、各个特殊 类中具有不同的语义。例如:“几何图形“的“绘图 “方法,“椭圆“和“多边形“都是“几何图“的子类, 其“绘图“方法功能不同。面向对象技术基础主动对象l主动对象是一组属性和一组服务的封装体,其中 至少有一个服务不需要接收消息就能主动执行( 称作主动服务)。lJava中拥有main方法的对象就是主动对象。面向对对象与过过程化程序设计设计v过程化程序设计-逐步求精的处理过程;(自顶向下的方法)-编写求解简单任务的过程,并将它们组装成 更加复杂的过程;(自底向上的方法) v面向对象-先从项目中分离出类-确定类中的成员及方法面向对对象与过过程化程序设计设计v 对于规模较小的问题,使用过程化程序

7、设计比较合适, 但对于大规模问题,使用面向对象有以下好处:-类提供了一种便于将众多的方法聚集在一起的机制; 如2000个过程,可能需要100个类,平均每个类20个方法 ;-类的封装机制有助于对其他的类方法隐藏数据操作;数据过过程过过程过过程过过程过过程对对象数据方法方法对对象数据方法方法Java语言的面向对象技术特性类l包括类声明和类体l类声明:publicabstract|final class className extends superclassName implements interfaceNameListJava语言的面向对象技术特性类l类体定义如下:class classNam

8、e public | protected | private static final transient volatile typevariableName; /成员变量public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList)throws exceptionListstatements /成员方法Java语言的面向对象技术特性类l成员变量public | protected | private static final transient vo

9、latile typevariableName; static: 静态变量(类变量);相对于实例变 量final: 常量transient: 暂时性变量,用于对象存档volatile: 贡献变量,用于并发线程的共享Java语言的面向对象技术特性类l成员方法方法的实现包括两部分内容:方法声明和方法体。public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList)throws exceptionList /方法声明statements /方法体l方法声明中

10、的限定词的含义:static: 类方法,可通过类名直接调用abstract: 抽象方法,没有方法体final: 方法不能被重写native: 集成其它语言的代码synchronized: 控制多个并发线程的访问Java语言的面向对象技术特性类l参数的值参传递import java.io.*;public class PassTestfloat ptValue;public static void main(String args) int val;PassTest pt=new PassTest();val=11;System.out.println(“Original Int Value i

11、s:”+val); pt.changeInt(val); /值参数System.out.println(“Int Value after Change is:“ +val); Java语言的面向对象技术特性类l参数的值参传递pt.ptValue=101f;System.out.println(“Original ptValue is:”+pt.ptValue);pt.changeObjValue(pt); /引用类型的参数System.out.println(“ptValue after Change is:“+pt.ptValue);public void changeInt(int val

12、ue)value=55; /在方法内部对值参数进行了修改public void changeObjValue(PassTest ref)ref.ptValue=99f; /在方法内部对引用参数进行了修改 Java语言的面向对象技术特性类l参数的值参传递c:java PassTest Original Int Value is : 11 Int Value after Change is: 11 Original ptValue is: 101.0 ptValue after Change is : 99.0 Java语言的面向对象技术特性类l成员方法(方法体)-方法体是对方法的实现,它包括局部

13、变量的声明 以及所有合法的Java指令。-方法体中声明的局部变量的作用域在该方法内部 。-若局部变量与类的成员变量同名,则类的成员变 量被隐藏。Java语言的面向对象技术特性类import java.io.*;class Variableint x=0,y=0,z=0; /类的成员变量void init(int x,int y) this.x=x; this.y=y; int z=5; /局部变量System.out.println(“* in init*“);System.out.println(“x=“+x+“ y=“+y+“ z=“+z); Java语言的面向对象技术特性类public

14、class VariableTestpublic static void main(String args)Variable v=new Variable();System.out.println(“*before init*“);System.out.println(“x=“+v.x+“ y=“+ v.y+“ z=“+v.z);v.init(20,30);System.out.println(“*after init*“);System.out.println(“x=“+v.x+ “ y=“+ v.y+“ z=“+v.z);Java语言的面向对象技术特性类c:java VariableTes

15、t *before init* x=0 y=0 z=0 * in init * x=20 y=30 z=5 *after init* x=20 y=30 z=0 Java语言的面向对象技术特性类v 成员方法lthis-用在一个方法中引用当前对象, 它的值是调用该方法的对象。l返回值须与返回类型一致,或者完全相同 ,或是其子类。l当返回类型是接口时,返回值必须实现该 接口。Java语言的面向对象技术特性类v 方法重载l方法重载是指多个方法享有相同的名字l区别在于:或者是参数的个数不同,或者是 参数类型不同。l参数类型的区分度一定要足够,例如不能 是同一简单类型的参数,如int与long。l返回类

16、型不能用来区分重载的方法。Java语言的面向对象技术特性类v 方法重载import java.io.*;class MethodOverloadingvoid receive(int i) System.out.println(“Receive one int data”);System.out.println(“i=”+i);void receive(int x, int y) System.out.println(“Receive two int datas”);System.out.println(“x=“+x+“ y=“+y); Java语言的面向对象技术特性类v方法重载public class MethodOverloadingTestpubli

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号