资源预览内容
第1页 / 共95页
第2页 / 共95页
第3页 / 共95页
第4页 / 共95页
第5页 / 共95页
第6页 / 共95页
第7页 / 共95页
第8页 / 共95页
第9页 / 共95页
第10页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 Java语言中的面向对象特性 学习内容 面向对象技术基础 Java语言的面向对象特性6.1 面向对象技术基础 面向对象的基本概念 面向对象的基本特征 面向对象的基本概念 类是对一类事物描述,是抽象的、概念上的定 义。 对象是实际存在的该类事物的每个个体,因而 也称实例(instance)。对象的基本概念 对象具有两方面的含义:变变量方法在现实生活中在计算机程序中客观世界的实体程序中对象就是一组变量和相 关方法的集合,其中变量表明 对象的状态,方法表明对象所 具有的行为。对象的基本概念 续类的基本概念 现实生活中的对象可以将现实生活中的对象 经过抽象,映射为程序中 的对象。对象在程序中是 通过一种抽象数据类型来 描述的,这种抽象数据类 型称为class Car int color_number; int door_number;int speed;void brake() void speedUp() void slowDown() 抽象数据类型类的基本概念 续面向对象的基本特征 1封装性 2继承性 3多态性封装性 封装性就是把对象的属性和服务结合成一个独 立的相同单位,并尽可能隐蔽对象的内部细节 ,包含两个含义: 把对象的全部属性和全部服务结合在一起,形 成一个不可分割的独立单位(即对象)。 信息隐蔽,即尽可能隐蔽对象的内部细节,对 外形成一个边界或者说形成一道屏障,只 保留有限的对外接口使之与外部发生联系。封装性 续继承性 特殊类的对象拥有其一般类的全部属性与服务 ,称作特殊类对一般类的继承。例如,轮船、 客轮;人、大人。一个类可以是多个一般类的 特殊类,它从多个一般类中继承了属性与服务 ,这称为多继承。 例如,客轮是轮船和客运工具的特殊类。在 Java语言中,通常我们称一般类为父类( superclass,超类),特殊类为子类(subclass) 。多态性 对象的多态性是指在一般类中定义的属性或服 务被特殊类继承之后,可以具有不同的数据类 型或表现出不同的行为。这使得同一个属性或 服务在一般类及其各个特殊类中具有不同的语 义。 例如:“几何图形“的“绘图“方法,“椭圆“和“多 边形“都是“几何图“的子类,其“绘图“方法功能 不同。面向对象程序设计方法 OOAObject Oriented Analysis 面向对象的分析 OODObject Oriented Design 面向对象的设计 OOIObject Oriented Implementation 面向对象的实现6.2 Java语言的面向对象特性 类 对象 面向对象特性 类 类是java中的一种重要的引用数据类型,是组 成java程序的基本要素。它封装了一类对象的 状态和方法,是这一类对象的原形。一个类的 实现包括两个部分:类声明和类体。类声明 publicabstract|final class className extends superclassName implements interfaceNameList其中,修饰符public,abstract,final 说明了类的属 性,className为类名,superclassName为 类的父类的名字,interfaceNameList为类所实 现的接口列表。类体类体定义如下:class classNamepublic | protected | private static final transient volatile typevariableName; /成员变量public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList) throws exceptionListstatements /成员方法成员变量成员变量的声明方式如下:public | protected | private static final transient volatile typevariableName; /成员变量 其中,static: 静态变量(类变量);相对于实例变量final: 常量transient: 暂时性变量,用于对象存档volatile: 贡献变量,用于并发线程的共享成员方法 方法的实现包括两部分内容:方法声明和方法体。public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList)throws exceptionList /方法声明statements /方法体方法声明中的限定词的含义:static: 类方法,可通过类名直接调用abstract: 抽象方法,没有方法体final: 方法不能被重写native: 集成其它语言的代码synchronized: 控制多个并发线程的访问方法声明 方法声明包括方法名、返回类型和外部参数。 其中参数的类型可以是简单数据类型,也可以 是引用数据类型。 对于简单数据类型来说,java实现的是值传递 ,方法接收参数的值,但不能改变这些参数的 值。如果要改变参数的值,则用引用数据类型 ,因为引用数据类型传递给方法的是数据在内 存中的地址,方法中对数据的操作可以改变数 据的值。关于简单数据类型与引用数据的区别 示例: 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 Value after Change is:“ + val); /* 值参数值的修改,没有影响值参数的值*/ 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(PassTest ref) ref.ptValue = 99f; / 在方法内部对引用参数进行了修改 关于简单数据类型与引用数据的区别 示例运行结果:方法体 方法体是对方法的实现,它包括局部变量的声 明以及所有合法的Java指令。方法体中声明的 局部变量的作用域在该方法内部。若局部变量 与类的成员变量同名,则类的成员变量被隐藏 。局部变量和类成员变量的作用域 示例:class Variable int 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); public class VariableTest public 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); 局部变量和类成员变量的作用域 示例运行结果:方法重载 方法重载是指多个方法享有相同的名字,但是 这些方法的参数必须不同,或者是参数的个数 不同,或者是参数类型不同。返回类型不能用 来区分重载的方法。方法重载 示例:class MethodOverloading void 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); public class MethodOverloadingTest public static void main(String args) MethodOverloading mo = new MethodOverloading(); mo.receive(1); mo.receive(2, 3); 方法重载 示例运行结果:构造方法 构造方法是一个特殊的方法。Java 中的每个 类都有构造方法,用来初始化该类的一个对象 。 构造方法具有和类名相同的名称,而且不返回 任何数据类型。 重载经常用于构造方法。 构造方法只能由new运算符调用。构造方法 示例: 构造方法之间是重载的class Point int x,y;Point() x=0; y=0;Point(int x, int y) this.x=x; this.y=y;对象 类实例化可生成对象,对象通过方法调用来进 行交互。一个对象的生命周期包括三个阶段: 生成、使用和消除。 对象的生成 对象的生成包括声明、实例化和初始化。 格式为:type objectName=new type(paramlist);对象的使用 通过运算符“.”可以实现对变量的访问和方法的 调用。变量和方法可以通过设定访问权限来限 制其它对象对它的访问。 对象的使用 续 调用对象的变量格式:objectReference.variableobjectReference是一个已生成的对象,也可以是能 生成对象的表达式例: p.x= 10;tx=new Point( ).x; 调用对象的方法格式:objectReference.methodName(paramlist);例如:p.move(30,20);new Point( ).move(30,20);对象的清除 当不存在对一个对象的引用时,该对象成为一 个无用对象。Java的垃圾收集器自动扫描对象 的动态内存区,把没有引用的对
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号