java面向对象特性(学Java必看).ppt
《java面向对象特性(学Java必看).ppt》由会员分享,可在线阅读,更多相关《java面向对象特性(学Java必看).ppt(75页珍藏版)》请在三一文库上搜索。
1、第3章 面向对象程序设计,更多免费资料,进群514167678,内容摘要,面向对象的思维就是以面向对象为中心来思考问题,此时会将与问题相关的种种元素视作为一个个的对象。问题的发生是由对象的交互所产生,而问题的解答也有某些对象彼此合作来完成。面向对象是一种对问题的思考方式,与任何的程序语言没有任何直接的关系,面向对象也绝不仅用于程序设计领域。对对象信息进行封装,我们使用了类。 本章首先从面向对象与面向过程的比较入手,介绍对象概念和面向对象开发过程。然后中的介绍如何在Java中创建Java类、方法和变量,接下来介绍Java对象、方法和继承,最后介绍内部类和抽象类。,共享资料和课程,进群514167
2、678,学习目标,理解面向过程和面向对象区别 掌握对象概念 了解面向对象开发过程 熟练掌握Java类的创建 掌握类中的方法和变量的创建 掌握创建对象和对象引用 熟练掌握常用的基本方法,如静态方法和最终方法 掌握继承概念 掌握内部类和抽象类的使用,3.1 面向过程与面向对象,现在,作为程序员肯定听说过面向对象编程(OOP)这个奇妙的术语。OOP是当今软件开发中最热门的种方法。面向对象编程与面向过程相比较,是一个全新的编程方式。本节就会介绍编程思路的发展和面向对象编程特点。,3.1.1 编程思路的发展,要明白面向对象编程给程序员带来的好处,是需要了解编程技术发展的历史。在早些时间的计算机年代里,编
3、程是一个十分花费精力的过程。计算机要做的每一步都必须详细入微(没有错误)地编写程序。早期的语言是著名的机器语言,后来进化为汇编语言。 面向过程 面向过程编程是程序开发首先选择的思路,这些过程语言把代码做成叫做过程或函数的块。每个块的日标是完成某个任务。 结构化程序设计 面向对象,3.1.2 面向对象设计,非面向对象与面向对象的区别 非面向对象的数据不能隐藏,而且数据与方法不够紧密 面向对象的思想 面向对象是一种思想,是指用什么样的思路去写程序,做软件。 真正的面向对象是指用面向对象的思想去在现实生活中解决问题,将现实中解决问题的思想与计算机思想更好地统一起来,能够让计算机模拟现实生活中解决问题
4、的办法。 通过语言来编写程序,模拟人类解决问题的方法思路,而解决问题的最好思想就是在现实中已形成的思想,计算机就是要解决现实中的问题,把现实的问题迁移到计算机中解决。,面向对象解决问题的方法思想 例:写一个数组排序程序ArraySort.java分析java的面向对象 传统的程序员写排序代码则一般都会思考怎么排序,用什么循环,如何移用元素等,自己写代码实现排序功能 作为一个java程序员,java是纯粹的面向对象的编程语言,则无需自己写代码实现,一定要转变思想,当java程序员遇到一个问题,要实现一个功能时,则不要一味地想到自己怎么解决问题,而是先想想java中有没有现成的哪个类的哪个方法可以
5、实现和解决问题。这就是面向对象的思想,也就是java的程序设计思想,3.1.2 面向对象设计,Java语言其实就是由很多的类组成,每个类有不同的对象,每个对象又有很多方法,所以我们解决问题,编写程序就是调用这些方法来解决问题。排序数组可使用java.util.Arrays.sort(数组名)来实现。 调用的java类的方法都是经过测试的,sun公司不断更新的方法,肯定是最好的,所以一定要学会运用不同类的不同方法。,3.1.2 面向对象设计,3.2 对象入门,类与对象 什么是对象 对象是现实世界中客观存在的,是类的实例,万事万物皆是一个对象。 任何一个对象都有2种特性:特征和行为 一个对象它具有
6、什么特征,我们称它具有什么属性,用属性表示 一个对象它有自己的行为,它具有什么行为,我们称它具有什么方法,用方法表示 任何一个对象都是有属性,有方法的。,3.2 对象入门,什么是类 类是同一类型事物数据的抽象,是对象共性的抽象,是客观对象在人脑中的主观反映,对象则是类的具体化,是类的实例。 类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。 java中的类与对象的使用 在java中,我们一定是写类,因为对象太多,无法写,只能写一个类来代表所有对象 在java中,我们一定是使用对象,因为类是一个抽象,没有实现,在现实生活中只有具体
7、的对象,所以我们一定是用对象,3.2 对象入门,面向对象主要特征: 封装性 封装是指对一件物品的描述信息是这个物品所特有的,是不能让外界看到的一些成员变量和方法。在Java里成员变量和方法就被封装在类里,需要通过一些特有的方法访问它们。 继承性 继承是发生在类与类之间的。继承可以是单继承,也可以多层继承。 多态性 对象根据所接受的消息而做出的动作。同一消息被不同的对象接受时可以产生完全不同的行为,这种现象称为多态。,3.3 面向对象开发过程,当我们遵照面向对象方法学的思想进行软件系统开发时,首先要行面向对象的分析(OOAObject Oriented Analysis),其任务是了解问题域所涉
8、及的对象、对象间的关系和作用(即操作),然后构造问题的对象模型,力争该模型能真实地反映出所要解决的“实质问题”。在这一过程中,抽象是最本质、最重要的方法。针对不同的问题性质选择不同的抽象层次,过简或过繁都会影响到对问题的本质属性的了解和解决。,3.3 面向对象开发过程,OOA 面向对象的分析方法(OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOD 面向对象的设计(OODObject Oriented
9、 Analysis),即设计软件的对象模型。根据所应用的面向对象软件开发环境的功能强弱不等,在对问题的对象模型的分析基础上,可能要对它进行一定的改造,但应以最少改变原问题域的对象模型为原则。然后就在软件系统内设设计各个对象、对象间的关系(如层次关系、继承关系等)、对象间的通信方式(如消息模式)等,总之是设计各个对象应做些什么。,3.3 面向对象开发过程,OOI(又可以称为OOP) 面向对象的实现(OOI- Object Oriented Zmplementation),即指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、输
10、出的形式及其它控制机理等,总之是实现在OOD阶段所规定的各个对象所应完成的任务。面向对象的实现(OOI)又称作面向对象的编程(OOP)。OOP(Object Oriented Programming)工作就是用一种面向对象的编程语言把OOD模型的每个成分书写出来。,3.3 面向对象开发过程,面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据
11、和向其它对象发送信息。,3.4 类,在Java中,完成对功能操作封装的单位称为类。类是有共同特性(属性)和操作(行为)定义的实体,类是用于组合各个对象所共有操作和属性的一种机制。可以根据类具有的属性和方法,赋予类不同的数值,来创建不同的对象实例。,3.4.1 类定义,类是构造面向对象程序的基本单位,是抽取了同类对象的共同属性和方法形成的对象或实体的“模板”。而对象是现实世界中实体的描述,对象要创建才存在,有了对象才能对对象进行操作。类是对象的模板,对象是类的实例。 类是Java的核心。由于类定义了一个对象的形式与属性,因此整个Java语言建立在这个逻辑结构之上。同样,类构成了Java面向对象程
12、序设计的基础。任何希望在Java程序中实现的想法都必须封装在类中。在一个类中,程序的作用体现在方法中。方法是Java创建一个有名字的子程序的方法。 当定义一个类时,就声明了该类确切的形式和属性。通过指定类中包含的数据和对这些数据进行操作的代码来定义一个类。,3.4.1 类定义,创建类的一般格式: 修饰符 class 类名 extends父类名 implements接口名列表 成员变量声明 成员方法声明 其中:class、extends和implements都是Java的关键字(保留字)。 类的修饰符主要有public、abstract 、final及缺省访问修饰符等四种。 注意:一个类可以同时
13、有多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序,可任意排列。 在java中允许定义没有任何成员的空类。,类的名称要符合标识符的命名规则: 不能为Java中的关键字。 不能包含空格或点号“.”,可以以下划线“_”、字母或“$”符号开头。 类的名称的第一个单词的第一个字母通常是大写,第二单词的第一个字母大写,以此类推。,3.4.2 属性和方法,在类体中,包含的是成员变量和成员方法,成员变量通常表示一个类所具有的属性。 通过声明成员方法可以定义类的行为,行为表示一个对象能够做的事情或者能够从一个对象取得的信息。类的各种功能操作都是方法来实现,属性只不过提供了相应的
14、数据。一个完整的方法通常包括方法名称、方法主体、方法参数和方法返回类型。其结构如图3-1所示:,3.4.2 属性和方法,图3-1 构成方法元素,3.4.2 属性和方法,在类体中创建方法,其语法格式如下: ( , ,) 方法以是否拥有返回值,是否带有参数,可以划分不同的方法形式。其常用的四种形式如下: void isN() void setN(int num) int getN() String getM(int a,int b) ,【例】 定义一个名为Box表示立方体的类,仅包含double类型的长length、宽width和高height三个成员变量。 class Box double le
15、ngth; double width; double height; 通过例,我们可以看到,在类中进行成员变量的声明与一般变量的声明形式完全相同,成员变量的类型可以是任意的,成员变量的名字在一个类中应该保证唯一性。例的类没有任何方法,下面再看一个有成员方法的类。,【例】定义一个名为Box表示立方体的类,包含double类型的长length、宽width和高height三个成员变量以及设置立方体长、宽、高值的方法initBox()、计算立方体体积的方法getVol()。 class Box / 定义Box类 double length; double width; double height;
16、double getVol() / 计算立方体体积的方法getVol() return length * width * height; void initBox(double l,double w,double h) / 初始化立方体长宽高值 length = l; width = w; height = h; ,【例】定义一个名为Box表示立方体的类,包含double类型的长length、宽width和高height三个成员变量以及设置立方体长、宽、高值的方法initBox()、计算立方体体积的方法getVol()。 class Box / 定义Box类 double length; do
17、uble width; double height; double getVol() / 计算立方体体积的方法getVol() return length * width * height; void initBox(double l,double w,double h) / 初始化立方体长宽高值 length = l; width = w; height = h; ,练习:创建一个电视机类,它包含: 属性:尺寸、型号、生产厂商 方法:打开、关闭、欣赏节目,3.5 对象,一旦定义了所需的类,就创建了一种新的数据类型,使用类类型定义的变量叫对象。对象创建类的变量称为类的实例化。对象是类的一个实例
18、。类的对象是在程序运行中创建生成的,其所占的空间在程序运行中动态分配。当一个类的对象完成了它的使命,为节省资源,Java的垃圾回收程序就会自动收回这个对象所占的空间,即类对象有自己的生命周期。 Java对象的生命周期大致包括三个阶段:对象的声明和创建,对象的使用,对象的清除。 如:Box box1; 定义的box1是一个对类型为类Box的对象的引用,box1不是对象本身,可理解为指针,可以指向类Box的某一个具体的对象(实例)。,1创建对象 创建类的对象一般需要两步: 第一步,声明该类型的一个变量; 第二步,用new运算符为对象动态分配(即在运行时分配) 内存空间,并返回对它的一个引用,这个引
19、用被存储在该变量中。 利用new创建类的对象的通用形式如下: 类对象名 = new 类名(); 例如,创建一个Box类的对象myBox可用以下语句 Box myBox; /声明一个对象 myBox = new Box();/创建一个对象,3.5.1 对象定义,new运算符允许与类声明结合使用来创建一个类的对象,如上面两行语句可组合为: Box myBox = new myBox(); 定义好后,可以把myBox作为类Box的对象来使用,而实际上myBox仅是保存了实例对象的地址,利用它来间接的引用实例对象。 注:创建一个对象需要该类的构造方法和new关键字(缺一不可)。New主要作用是在创建对
20、象时,开辟一块内存,而内存空间的大小由构造函数决定。,2使用对象 创建了类的对象后,就可以对对象的各个成员进行访问,以进行各种处理。访问对象成员的通用形式为 类对象名 . 成员变量名 类对象名 . 成员方法名( ) / 括号不能省略 运算符“. ”称为成员运算符,在类对象名和成员变量名、成员方法之间起到连接的作用,以此指明是哪个对象的成员。 从上面的访问形式,可以看出,要使用对象变量首先要构造对象,获得类对象名,即类变量名。,【例】利用上例定义的Box类,计算长、宽、高分别为5、4、3的立方体体积。 public class BoxDemoOne public static void main
21、(String args) Box myBox = new Box(); double vol; myBox.length = 5; myBox.width = 4; myBox.height = 3; vol = myBox.length * myBox.width * myBox.height; System.out.println(“立方体的体积是: “ + vol); ,注意:要编译成功,必须将例5.1定义的Box类置于本程序中,以生成Box.class和BoxDemoOne.class两个字节码文件,程序运行结果如下: 长方体的体积是: 60.0 当程序需要更多的类对象时,可用new
22、运算符多次创建该类的对象,然后按例5.3中的代码形式进行长方体体积的运算。这样一来,程序中对成员变量的访问赋值语句会很多,显得程序不够紧凑。更好的方法是在类定义中加入可对成员数据进行操作的成员方法(如例所定义的类Box),可使程序更加有效率。 例p90,3清除对象 在java中,有自动内存管理系统的垃圾收集器,会定时或在内存不足时,自动回收垃圾对象所占的内存。程序员使用new关键字来为对象分为配空间释放对象时,只需要将对象所有引用赋值null。 其语法格式如下所示: objPerson=null;,当使用不同的构造方法或参数数据创建对象时,就会产生大量的、不同的对象。但这些对象有一个特点,就是
23、都是来源于同一个类。这些对象之间,可以进行相应的引用。 例:class Obj double d; public Obj(double dd) d=dd; public void getD() System.out.println(d); public static void main(String args) Obj Obj1=new Obj(2.34); Obj Obj2=new Obj(3.34); Obj1.getD(); Obj2.getD(); Obj1=Obj2; /对象引用 Obj1.getD(); ,3.5.2 对象引用,练习:定义Circle类的成员变量r和常量PI及方法。
24、 class Example1 / 定义Box类 float r; final double PI=3.14; public double area() return PI*r*r; public void setR(float x) r=x; public double perimeter() return 2*PI*r; ,public static void main(String args) double x,y; Example1 cir=new Example1(); cir.setR(2.3f); x=cir.area(); y=cir.perimeter(); System.o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 特性
链接地址:https://www.31doc.com/p-2145613.html