Java面向对象特性.ppt
《Java面向对象特性.ppt》由会员分享,可在线阅读,更多相关《Java面向对象特性.ppt(94页珍藏版)》请在三一办公上搜索。
1、Java面向对象特性,伍淳华北京邮电大学计算机学院,Java,JAVA语言概述,学习目标,Java,JAVA语言概述,难点和重点,Java,面向对象技术基础,什么是面向对象,80年代初的定义:面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。,Java,面向对象技术基础,基本思想,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。软件开发是一种逻辑思维活动,其方法不应该是一种超越人类日常的
2、思维方式。,Java,面向对象技术基础,对象的基本概念,客观世界的组成:-对象-对象之间的关系对象:对象是系统中需要研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。,Java,面向对象技术基础,类的基本概念,把众多的事物归纳、划分成一些类是人类在认识客观世界时经常采用的思维方法。分类的原则是抽象。类是具有相同属性和服务的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。,Java,面向对象技术基础,class Car int color_numb
3、er;int door_number;int speed;void brake()void speedUp();void slowDown(),现实生活中的对象,Java,面向对象技术基础,类的基本概念,在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。类与对象的关系:模具铸件 类 实例化对象,Java,面向对象技术基础,封装,封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成
4、一个边界或者说形成一道屏障,只保留有限的对外接口使之与外部发生联系。,Java,面向对象技术基础,封装,封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的“交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。可见性:对象的属性和服务允许对象外部存取和引用的程序。,Java,面向对象技术基础,继承,特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。例如,轮船、客轮;人、学生。多继承:一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务。例如,客轮是轮船和客运工具的特殊类。在java语言中,通常我
5、们称一般类为父类(superclass,超类),特殊类为子类(subclass)。,Java,面向对象技术基础,消息,消息就是向对象发出的服务请求,它应该包含下述信息:提供服务的对象标识、服务标识、输入信息和回答信息。System.out.println(“hello”);point.draw();服务通常被称为方法或函数。,Java,面向对象技术基础,多态性,对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或服务在一般类及其各个特殊类中具有不同的语义。例如:几何图形的绘图方法,椭圆和多边形都是几何图的子类,其绘图方法功能不
6、同。,Java,面向对象技术基础,主动对象,主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称作主动服务)。Java中拥有main方法的对象就是主动对象。,Java,面向对象与过程化程序设计,过程化程序设计-逐步求精的处理过程;(自顶向下的方法)-编写求解简单任务的过程,并将它们组装成更加复杂的过程;(自底向上的方法)面向对象-先从项目中分离出类-确定类中的成员及方法,Java,面向对象与过程化程序设计,对于规模较小的问题,使用过程化程序设计比较合适,但对于大规模问题,使用面向对象有以下好处:-类提供了一种便于将众多的方法聚集在一起的机制;如2000个过程,
7、可能需要100个类,平均每个类20个方法;-类的封装机制有助于对其他的类方法隐藏数据操作;,数据,过程,过程,过程,过程,过程,对象数据,方法,方法,对象数据,方法,方法,Java,Java语言的面向对象技术特性,类,包括类声明和类体类声明:publicabstract|final class className extends superclassName implements interfaceNameList,Java,Java语言的面向对象技术特性,类,类体定义如下:class className public|protected|private static final transi
8、ent volatile typevariableName;/成员变量public|protected|private staticfinal|abstract native synchronizedreturnType methodName(paramList)throws exceptionListstatements/成员方法,Java,Java语言的面向对象技术特性,类,成员变量 public|protected|private static final transient volatile typevariableName;static:静态变量(类变量);相对于实例变量final:
9、常量transient:暂时性变量,用于对象存档volatile:贡献变量,用于并发线程的共享,Java,Java语言的面向对象技术特性,类,成员方法方法的实现包括两部分内容:方法声明和方法体。public|protected|private staticfinal|abstract native synchronizedreturnType methodName(paramList)throws exceptionList/方法声明statements/方法体方法声明中的限定词的含义:static:类方法,可通过类名直接调用abstract:抽象方法,没有方法体final:方法不能被重写na
10、tive:集成其它语言的代码synchronized:控制多个并发线程的访问,Java,Java语言的面向对象技术特性,类,参数的值参传递 import java.io.*;public class PassTest float ptValue;public static void main(String args)int val;PassTest pt=new PassTest();val=11;System.out.println(“Original Int Value is:”+val);pt.changeInt(val);/值参数 System.out.println(Int Valu
11、e after Change is:+val);,Java,Java语言的面向对象技术特性,类,参数的值参传递 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 value)value=55;/在方法内部对值参数进行了修改public void changeObjValue(Pass
12、Test ref)ref.ptValue=99f;/在方法内部对引用参数进行了修改,Java,Java语言的面向对象技术特性,类,参数的值参传递 c:java PassTestOriginal Int Value is:11Int Value after Change is:11Original ptValue is:101.0ptValue after Change is:99.0,Java,Java语言的面向对象技术特性,类,成员方法(方法体)-方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。-方法体中声明的局部变量的作用域在该方法内部。-若局部变量与类的成员变量同名
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,Java语言的面向对象技术特性,类,public class VariableTestpublic static void main(String args)Variabl
14、e 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,Java语言的面向对象技术特性,类,c:java VariableTest*before init*x=0 y=0 z=0*in init*x=20 y=30 z=5*after init*x=20 y=30 z=0,Jav
15、a,Java语言的面向对象技术特性,类,成员方法this-用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或者完全相同,或是其子类。当返回类型是接口时,返回值必须实现该接口。,Java,Java语言的面向对象技术特性,类,方法重载方法重载是指多个方法享有相同的名字区别在于:或者是参数的个数不同,或者是参数类型不同。参数类型的区分度一定要足够,例如不能是同一简单类型的参数,如int与long。返回类型不能用来区分重载的方法。,Java,Java语言的面向对象技术特性,类,方法重载 import java.io.*;class MethodOverloading vo
16、id 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,Java语言的面向对象技术特性,类,方法重载public class MethodOverloadingTestpublic static void main(String args)MethodOverloadin
17、g mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);,Java,Java语言的面向对象技术特性,类,方法重载c:java MethodOverloadingTestReceive one int datai=1Receive two int datasx=2 y=3,Java,Java语言的面向对象技术特性,类,构造方法 重载经常用于构造方法。构造方法具有和类名相同的名称,而且不返回任何数据类型。Java 中的每个类都有构造方法,用来初始化该类的一个对象。构造方法只能由new运算符调用,Java,Java语言的面向对象技术特性,
18、类,构造方法 class Pointint x,y;Point()x=0;y=0;Point(int x,int y)this.x=x;this.y=y;,Java,Java语言的面向对象技术特性,对象,类实例化可生成对象对象通过消息传递来进行交互消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。表示为调用该对象的某个方法。public class HelloWorldApp public static void main(String args)System.out.println(“hello”);,Java,Java语言的面向对象技术特性,对象,对象的生命周期生成使用清
19、除,Java,Java语言的面向对象技术特性,对象,对象的生成对象的生成包括声明、实例化和初始化。格式为:type objectName=new type(paramlist);声明:type objectName 声明并不为对象分配内存空间,而只是分配一个引用空间;实例化:运算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间;生成:执行构造方法,进行初始化;根据参数不同调用相应的构造方法。,Java,Java语言的面向对象技术特性,对象,对象的生成对象的引用类似于指针,是32位的地址空间,它的值指向一个中间的数据结构,它存储有关数据类型的信息
20、以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。,Java,Java语言的面向对象技术特性,对象,对象的使用通过运算符“.”可以实现对变量的访问和方法的调用。变量和方法可以通过设定访问权限来限制其它对象对它的访问。,Java,Java语言的面向对象技术特性,对象,调用对象的变量格式:objectReference.variableobjectReference是一个已生成的对象,也可以是能生成对象的表达式例:p.x=10;tx=new Point().x;,Java,Java语言的面向对象技术特性,对象,调用对象的方法格式:objectReferenc
21、e.methodName(paramlist);例如:p.move(30,20);new Point().move(30,20);使用方法的返回值 if(p.equal(20,30)/statements when equal else/statements when unequal,Java,Java语言的面向对象技术特性,对象,对象的清除当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。System.gc();当系统内存用尽或调用System.gc()要求垃圾回收时,垃圾回收线程与系统同步运行。,Jav
22、a,Java语言的面向对象技术特性,Java的面向对象特性,封装性继承性多态性,Java,Java语言的面向对象技术特性,Java的面向对象特性,封装性类定义 class className public|protected|private static final transient volatile typevariableName;/成员变量public|protected|private staticfinal|abstract native synchronizedreturnType methodName(paramList)throws exceptionListstatemen
23、ts/成员方法,Java,Java语言的面向对象技术特性,Java的面向对象特性,封装性Java类中的修饰词 1)private 类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。2)default类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。,Java,Java语言的面向对象技术特性,Java的面向对象特性,封装性Java类中的修饰词3)protected类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和
24、同一个包中的所有其他的类访问。4)public类中限定为public的成员,可以被所有的类访问。,Java,Java语言的面向对象技术特性,Java的面向对象特性,封装性Java类中的修饰词,Java,Java语言的面向对象技术特性,Java的面向对象特性,继承性通过继承实现代码复用根类:java.lang.Object父类包括直接或者间接被继承的类Java不支持多重继承子类不能继承父类中访问权限为private的成员变量和方法。子类可以重写父类的方法,其命名与父类方法同名,Java,Java语言的面向对象技术特性,Java的面向对象特性,继承性创建子类-格式 class SubClass e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 特性

链接地址:https://www.31ppt.com/p-2599832.html