java面向对象特性学Java必看_第1页
java面向对象特性学Java必看_第2页
java面向对象特性学Java必看_第3页
java面向对象特性学Java必看_第4页
java面向对象特性学Java必看_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java面向对象特性学Java必看 第第3章章 面向对面向对 象程序设计象程序设计 更多免费资料,进群514167678 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 内容摘要 面向对象的思维就是以面向对象为中心来思考问题,此时会 将与问题相关的种种元素视作为一个个的对象。问题的发生是 由对象的交互所产生,而问题的解答也有某些对象彼此合作来 完成。面向对象是一种对问题的思考方式,与任何的程序语言 没有任何直接的关系,面向对象也绝不仅用于程序设计领域。 对对象信息进行封装,我们使用了类。 本章首先从面向对象与面向过程的比较入手,介绍对象概念 和面向对象开发过程。然后中的介绍

2、如何在Java中创建Java类、 方法和变量,接下来介绍Java对象、方法和继承,最后介绍内 部类和抽象类。 共享资料和课程,进群514167678 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 学习目标 理解面向过程和面向对象区别 掌握对象概念 了解面向对象开发过程 熟练掌握Java类的创建 掌握类中的方法和变量的创建 掌握创建对象和对象引用 熟练掌握常用的基本方法,如静态方法和最终方法 掌握继承概念 掌握内部类和抽象类的使用 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.1 面向过程与面向对象面向过程与面向对象 现在,作为程序员肯定听说过面向

3、对象编程(OOP) 这个奇妙的术语。OOP是当今软件开发中最热门的种 方法。面向对象编程与面向过程相比较,是一个全新的 编程方式。本节就会介绍编程思路的发展和面向对象编 程特点。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.1.1 编程思路的发展编程思路的发展 要明白面向对象编程给程序员带来的好处,是需要了解 编程技术发展的历史。在早些时间的计算机年代里,编程是 一个十分花费精力的过程。计算机要做的每一步都必须详细 入微(没有错误)地编写程序。早期的语言是著名的机器语言, 后来进化为汇编语言。 u 面向过程 面向过程编程是程序开发首先选择的思路,这些过程语 言把代码

4、做成叫做过程或函数的块。每个块的日标是完成某 个任务。 u 结构化程序设计 u 面向对象 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.1.2 面向对象设计面向对象设计 非面向对象与面向对象的区别 l非面向对象的数据不能隐藏,而且数据与方法不够紧密 l面向对象的思想 l面向对象是一种思想,是指用什么样的思路去写程 序,做软件。 l真正的面向对象是指用面向对象的思想去在现实生 活中解决问题,将现实中解决问题的思想与计算机 思想更好地统一起来,能够让计算机模拟现实生活 中解决问题的办法。 l通过语言来编写程序,模拟人类解决问题的方法思 路,而解决问题的最好思想就是在现实中

5、已形成的 思想,计算机就是要解决现实中的问题,把现实的 问题迁移到计算机中解决。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 面向对象解决问题的方法思想面向对象解决问题的方法思想 例:写一个数组排序程序例:写一个数组排序程序ArraySort.java分析分析java的面向对象的面向对象 l传统的程序员写排序代码则一般都会思考怎么排序,用什么循环, 如何移用元素等,自己写代码实现排序功能 l作为一个java程序员,java是纯粹的面向对象的编程语言,则无 需自己写代码实现,一定要转变思想,当java程序员遇到一个问 题,要实现一个功能时,则不要一味地想到自己怎么解决问题

6、, 而是先想想java中有没有现成的哪个类的哪个方法可以实现和解 决问题。这就是面向对象的思想,也就是java的程序设计思想 3.1.2 面向对象设计面向对象设计 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 lJava语言其实就是由很多的类组成,每个类有不同 的对象,每个对象又有很多方法,所以我们解决问 题,编写程序就是调用这些方法来解决问题。排序 数组可使用java.util.Arrays.sort(数组名)来实现。 l调用的java类的方法都是经过测试的,sun公司不 断更新的方法,肯定是最好的,所以一定要学会运 用不同类的不同方法。 3.1.2 面向对象设计面向对

7、象设计 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.2 对象入门对象入门 u类与对象 l什么是对象 l对象是现实世界中客观存在的,是类的实例,万事万 物皆是一个对象。 l任何一个对象都有2种特性:特征和行为 l一个对象它具有什么特征,我们称它具有什么属性, 用属性表示 l一个对象它有自己的行为,它具有什么行为,我们称 它具有什么方法,用方法表示 l任何一个对象都是有属性,有方法的。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.2 对象入门对象入门 l什么是类 l类是同一类型事物数据的抽象,是对象共性的抽象, 是客观对象在人脑中的主观反映,

8、对象则是类的具体 化,是类的实例。 l类是对象的模板。即类是对一组有相同数据和相同操 作的对象的定义,一个类所包含的方法和数据描述一 组对象的共同属性和行为。 ljava中的类与对象的使用 l在java中,我们一定是写类写类,因为对象太多,无法写, 只能写一个类来代表所有对象 l在java中,我们一定是使用对象使用对象,因为类是一个抽象, 没有实现,在现实生活中只有具体的对象,所以我们 一定是用对象 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.2 对象入门对象入门 面向对象主要特征:面向对象主要特征: l 封装性封装性 封装是指对一件物品的描述信息是这个物品所特有的

9、, 是不能让外界看到的一些成员变量和方法。在Java里成 员变量和方法就被封装在类里,需要通过一些特有的方 法访问它们。 l 继承性继承性 继承是发生在类与类之间的。继承可以是单继承,也可 以多层继承。 l 多态性多态性 对象根据所接受的消息而做出的动作。同一消息被不同 的对象接受时可以产生完全不同的行为,这种现象称为 多态。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.3 面向对象开发过程面向对象开发过程 当我们遵照面向对象方法学的思想进行软件系统开发时, 首先要行面向对象的分析(OOAObject Oriented Analysi s),其任务是了解问题域所涉及

10、的对象、对象间的关系和作 用(即操作),然后构造问题的对象模型,力争该模型能真 实地反映出所要解决的“实质问题”。在这一过程中,抽象 是最本质、最重要的方法。针对不同的问题性质选择不同的 抽象层次,过简或过繁都会影响到对问题的本质属性的了解 和解决。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.3 面向对象开发过程面向对象开发过程 u OOA 面向对象的分析方法面向对象的分析方法(OOA),是在一个系统的开发过程中 进行了系统业务调查以后,按照面向对象的思想来分析问题。OO A与结构化分析有较大的区别。OOA所强调的是在系统调查资料的 基础上,针对OO方法所需要的素

11、材进行的归类分析和整理,而不 是对管理业务现状和方法的分析。 u OOD 面向对象的设计面向对象的设计(OODObject Oriented Analysis),即 设计软件的对象模型。根据所应用的面向对象软件开发环境的功能 强弱不等,在对问题的对象模型的分析基础上,可能要对它进行一 定的改造,但应以最少改变原问题域的对象模型为原则。然后就在 软件系统内设设计各个对象、对象间的关系(如层次关系、继承关 系等)、对象间的通信方式(如消息模式)等,总之是设计各个对 象应做些什么。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.3 面向对象开发过程面向对象开发过程 u OO

12、I(又可以称为OOP) 面向对象的实现面向对象的实现(OOI- Object Oriented Zmplementation),即 指软件功能的编码实现,它包括:每个对象的内部功能的实现;确立 对象哪一些处理能力应在哪些类中进行描述;确定并实现系统的界面、 输出的形式及其它控制机理等,总之是实现在OOD阶段所规定的各个 对象所应完成的任务。面向对象的实现(OOI)又称作面向对象的编 程(OOP)。OOP(Object Oriented Programming)工作就是用一 种面向对象的编程语言把OOD模型的每个成分书写出来。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看

13、3.3 面向对象开发过程面向对象开发过程 面向对象编程(Object Oriented Programming,OOP,面 向对象程序设计)是一种计算机编程架构。OOP的一条基本原 则是计算机程序是由单个能够起到子程序作用的单元或对象组 合而成。OOP达到了软件工程的三个主要目标:重用性、灵活 性和扩展性。为了实现整体运算,每个对象都能够接收信息、 处理数据和向其它对象发送信息。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4 类类 在Java中,完成对功能操作封装的单位称为类。类是有 共同特性(属性)和操作(行为)定义的实体,类是用于组 合各个对象所共有操作和属性

14、的一种机制。可以根据类具有 的属性和方法,赋予类不同的数值,来创建不同的对象实例。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4.1 类定义类定义 类是构造面向对象程序的基本单位,是抽取了同类对象 的共同属性和方法形成的对象或实体的“模板”。而对象是 现实世界中实体的描述,对象要创建才存在,有了对象才能 对对象进行操作。类是对象的模板,对象是类的实例。 类是类是Java的核心的核心。由于类定义了一个对象的形式与属性, 因此整个Java语言建立在这个逻辑结构之上。同样,类构成 了Java面向对象程序设计的基础。任何希望在任何希望在Java程序中实程序中实 现的想法都

15、必须封装在类中。现的想法都必须封装在类中。在一个类中,程序的作用体现 在方法中。方法是方法是Java创建一个有名字的子程序的方法。创建一个有名字的子程序的方法。 当定义一个类时,就声明了该类确切的形式和属性。通 过指定类中包含的数据和对这些数据进行操作的代码来定义 一个类。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4.1 类定义类定义 创建类的一般格式:创建类的一般格式: 修饰符修饰符 class class 类名类名 extendsextends父类名父类名 implements implements接口名列表接口名列表 成员变量声明成员变量声明 成员方法声明

16、成员方法声明 其中:其中:class、extends和和implements都是都是Java的关键字的关键字(保留字保留字)。 类的修饰符主要有类的修饰符主要有public、abstract 、final及缺省访问修饰符等四种。及缺省访问修饰符等四种。 注意:一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个注意:一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个 类有多个修饰符时,这些修饰符无先后顺序,可任意排列。类有多个修饰符时,这些修饰符无先后顺序,可任意排列。 在在java中允许定义没有任何成员的空类。中允许定义没有任何成员的空类。 窗内网,免费看视频,轻松学编程 ja

17、va面向对象特性学Java必看 类的名称要符合标识符的命名规则:类的名称要符合标识符的命名规则: l 不能为不能为Java中的关键字。中的关键字。 l 不能包含空格或点号不能包含空格或点号“.”,可以以下划线,可以以下划线 “_”、字母或、字母或“$”符号开头。符号开头。 l 类的名称的第一个单词的第一个字母通常类的名称的第一个单词的第一个字母通常 是大写,第二单词的第一个字母大写,以此类是大写,第二单词的第一个字母大写,以此类 推。推。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4.2 属性和方法属性和方法 在类体中,包含的是成员变量和成员方法,成员变量通常在类

18、体中,包含的是成员变量和成员方法,成员变量通常 表示一个类所具有的属性。表示一个类所具有的属性。 通过声明成员方法可以定义类的行为,行为表示一个对象 能够做的事情或者能够从一个对象取得的信息。类的各种功能 操作都是方法来实现,属性只不过提供了相应的数据。一个完 整的方法通常包括方法名称、方法主体、方法参数和方法返回 类型。其结构如图3-1所示: 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4.2 属性和方法属性和方法 图3-1 构成方法元素 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.4.2 属性和方法属性和方法 在类体中创建方法,其语法

19、格式如下:在类体中创建方法,其语法格式如下: ( , ,) 方法以是否拥有返回值,是否带有参数,可以划分不同的方法 形式。其常用的四种形式如下: lvoid isN() lvoid setN(int num) lint getN() lString getM(int a,int b) 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 【例例】 定义一个名为定义一个名为BoxBox表示立方体的类,仅包含表示立方体的类,仅包含doubledouble类类 型的长型的长lengthlength、宽、宽widthwidth和高和高heightheight三个成员变量。三个成员变量。

20、class Boxclass Box double length; double length; double width; double width; double height; double height; 通过例,我们可以看到,在类中进行成员变量的声明与一通过例,我们可以看到,在类中进行成员变量的声明与一 般变量的声明形式完全相同,成员变量的类型可以是任般变量的声明形式完全相同,成员变量的类型可以是任 意的,成员变量的名字在一个类中应该保证唯一性。例意的,成员变量的名字在一个类中应该保证唯一性。例 的类没有任何方法,下面再看一个有成员方法的类。的类没有任何方法,下面再看一个有成员方法的

21、类。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 【例例】定义一个名为定义一个名为BoxBox表示立方体的类,包含表示立方体的类,包含doubledouble类型类型 的长的长lengthlength、宽、宽widthwidth和高和高heightheight三个成员变量以及设置立三个成员变量以及设置立 方体长、宽、高值的方法方体长、宽、高值的方法initBox()initBox()、计算立方体体积的、计算立方体体积的 方法方法getVol()getVol()。 class Box / class Box / 定义定义BoxBox类类 double length;dou

22、ble length; double width; double width; double height; double height; double getVol() / double getVol() / 计算立方体体积的方法计算立方体体积的方法getVol()getVol() return length return length * * width width * * height; height; void initBox(double l,double w,double h) void initBox(double l,double w,double h) / / 初始化立方体长

23、宽高值初始化立方体长宽高值 length = l; width = w; height = h; length = l; width = w; height = h; 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 【例】定义一个名为Box表示立方体的类,包含double类 型的长length、宽width和高height三个成员变量以及设 置立方体长、宽、高值的方法initBox()、计算立方体体 积的方法getVol()。 class Box / 定义Box类 double length; double width; double height; double getV

24、ol() / 计算立方体体积的方法getVol() return length * width * height; void initBox(double l,double w,double h) / 初始化立方体长宽高值 length = l; width = w; height = h; 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 练习:创建一个电视机类,它包含:练习:创建一个电视机类,它包含: 属性:尺寸、型号、生产厂商 方法:打开、关闭、欣赏节目 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.5 对象对象 一旦定义了所需的类,就创建了一

25、种新的数据类型,使用类类一旦定义了所需的类,就创建了一种新的数据类型,使用类类 型定义的变量叫对象。型定义的变量叫对象。对象创建类的变量称为类的实例化。对 象是类的一个实例。类的对象是在程序运行中创建生成的,其 所占的空间在程序运行中动态分配。当一个类的对象完成了它 的使命,为节省资源,Java的垃圾回收程序就会自动收回这个对 象所占的空间,即类对象有自己的生命周期。 Java对象的生命对象的生命 周期大致包括三个阶段:对象的声明和创建,对象的使用,对周期大致包括三个阶段:对象的声明和创建,对象的使用,对 象的清除。象的清除。 如:如:Box box1;Box box1; 定义的定义的box1

26、box1是一个对类型为类是一个对类型为类BoxBox的对象的引用,的对象的引用,box1box1不是对象不是对象 本身,可理解为指针,可以指向类本身,可理解为指针,可以指向类BoxBox的某一个具体的对象(实的某一个具体的对象(实 例)。例)。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 1 1创建对象创建对象 创建类的对象一般需要两步:创建类的对象一般需要两步: 第一步,声明该类型的一个变量;第一步,声明该类型的一个变量; 第二步,用第二步,用newnew运算符为对象动态分配运算符为对象动态分配( (即在运行时分配即在运行时分配) ) 内内 存空间,并返回对它的一个引

27、用,这个引用被存储在该存空间,并返回对它的一个引用,这个引用被存储在该 变量中。变量中。 利用利用newnew创建类的对象的通用形式如下:创建类的对象的通用形式如下: 类对象名类对象名 = new = new 类名类名();(); 例如,创建一个例如,创建一个BoxBox类的对象类的对象myBoxmyBox可用以下语句可用以下语句 Box myBox;Box myBox; /声明一个对象声明一个对象 myBox = new Box();/ myBox = new Box();/创建一个对象创建一个对象 3.5.1 对象定义对象定义 窗内网,免费看视频,轻松学编程 java面向对象特性学Java

28、必看 newnew运算符允许与类声明结合使用来创建一个类的对运算符允许与类声明结合使用来创建一个类的对 象,如上面两行语句可组合为:象,如上面两行语句可组合为: Box myBox = new myBox();Box myBox = new myBox(); 定义好后,可以把定义好后,可以把myBoxmyBox作为类作为类BoxBox的对象来使用,而的对象来使用,而 实际上实际上myBoxmyBox仅是保存了实例对象的地址,利用它来仅是保存了实例对象的地址,利用它来 间接的引用实例对象。间接的引用实例对象。 注:创建一个对象需要该类的构造方法和注:创建一个对象需要该类的构造方法和newnew关

29、键字关键字 (缺一不可)。(缺一不可)。NewNew主要作用是在创建对象时,开辟主要作用是在创建对象时,开辟 一块内存,而内存空间的大小由构造函数决定。一块内存,而内存空间的大小由构造函数决定。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 2 2使用对象使用对象 创建了类的对象后,就可以对对象的各个成员进行访问,创建了类的对象后,就可以对对象的各个成员进行访问, 以进行各种处理。访问对象成员的通用形式为以进行各种处理。访问对象成员的通用形式为 类对象名类对象名 . . 成员变量名成员变量名 类对象名类对象名 . . 成员方法名成员方法名( ) / ( ) / 括号不能省

30、略括号不能省略 运算符“. ”称为成员运算符,在类对象名和成员变量 名、成员方法之间起到连接的作用,以此指明是哪个 对象的成员。 从上面的访问形式,可以看出,要使用对象变量首先要 构造对象,获得类对象名,即类变量名。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 【例例】利用上例定义的利用上例定义的BoxBox类,计算长、宽、高分别为类,计算长、宽、高分别为5 5、 4 4、3 3的立方体体积。的立方体体积。 public class BoxDemoOnepublic class BoxDemoOne public static void main(String args

31、) public static void main(String args) Box myBox = new Box(); Box myBox = new Box(); double vol; double vol; myBox.length = 5; myBox.length = 5; myBox.width = 4; myBox.width = 4; myBox.height = 3; myBox.height = 3; vol = myBox.length vol = myBox.length * * myBox.width myBox.width * * myBox.height; m

32、yBox.height; System.out.println( System.out.println(立方体的体积是:立方体的体积是: + vol); + vol); 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 注意:要编译成功,必须将例5.1定义的Box类置于本程序 中,以生成Box.class和BoxDemoOne.class两个字节码文件, 程序运行结果如下: 长方体的体积是: 60.0 当程序需要更多的类对象时,可用new运算符多次创建该类 的对象,然后按例5.3中的代码形式进行长方体体积的运 算。这样一来,程序中对成员变量的访问赋值语句会很 多,显得程序不够

33、紧凑。更好的方法是在类定义中加入 可对成员数据进行操作的成员方法(如例所定义的类 Box),可使程序更加有效率。 例p90 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3 3清除对象清除对象 在java中,有自动内存管理系统的垃圾收集器,会定时 或在内存不足时,自动回收垃圾对象所占的内存。程序 员使用new关键字来为对象分为配空间释放对象时,只 需要将对象所有引用赋值null。 其语法格式如下所示: objPerson=null; 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 当使用不同的构造方法或参数数据创建对象时,就会产生大量的、当使用不同的构

34、造方法或参数数据创建对象时,就会产生大量的、 不同的对象。但这些对象有一个特点,就是都是来源于同一个类。这不同的对象。但这些对象有一个特点,就是都是来源于同一个类。这 些对象之间,可以进行相应的引用。些对象之间,可以进行相应的引用。 例:例: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

35、.getD(); Obj2.getD(); Obj1=Obj2; /对象引用对象引用 Obj1.getD(); 3.5.2 对象引用对象引用 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 练习:定义Circle类的成员变量r和常量PI及方法。 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; p

36、ublic static void main(String public static void main(String args)args) double x,y;double x,y; Example1 cir=new Example1();new Example1(); cir.setR(2.3f); x=cir.area(); y=cir.perimeter(); System.out.println(圆面积=+x+园 周长=+y); 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.5.3 构造方法构造方法 构造方法是类中一种特殊的方法,用来初始化该类构造方法是

37、类中一种特殊的方法,用来初始化该类 的一个新的对象。的一个新的对象。Java中的每个类都有构造方法。如果中的每个类都有构造方法。如果 没有指定构造方法,则系统会调用默认的构造方法。默没有指定构造方法,则系统会调用默认的构造方法。默 认的构造方法不带有任何一个参数。构造方法具有和类认的构造方法不带有任何一个参数。构造方法具有和类 名相同的名称,而且不返回任何数据类型,在构造方法名相同的名称,而且不返回任何数据类型,在构造方法 的实现中,也可以进行方法重写。的实现中,也可以进行方法重写。 构造方法负责对象的初始化工作,为实例变量赋予构造方法负责对象的初始化工作,为实例变量赋予 合适的初始值。构造方

38、法必须满足以下语法规则:合适的初始值。构造方法必须满足以下语法规则: l方法名必须与类名相同。方法名必须与类名相同。 l不要声明返回类型。不能被不要声明返回类型。不能被static、final、 synchronized、abstract和和native修饰。修饰。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.5.3 构造方法构造方法 构造方法可以分为参数化构造方法和隐式构造方法,参数化构造 方法即在构造方法中带有参数,隐式构造方法就是系统默认的构造方 法。 一个类被实例化一个类被实例化,也就是被也就是被new的时候的时候,最先执行的是最先执行的是 构构 造函数造函

39、数(如果你有留心如果你有留心,你会发现很多类里面根本没有写你会发现很多类里面根本没有写 构造函数构造函数)。 在在java类中,如果不显示声明构造函数,类中,如果不显示声明构造函数,JVM 会给该类会给该类 一个默认的构造函数。一个默认的构造函数。 构造函数的主要作用构造函数的主要作用 : 一是用来实例化该类。一是用来实例化该类。 二是让该类实例化的时候执行哪些方法,初始化哪些属二是让该类实例化的时候执行哪些方法,初始化哪些属 性。性。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 【例】利用构造方法实例。 public class Gou / 定义定义Box类类 int

40、 a=2; int b=3; int c=4; public Gou() System.out.println(*); System.out.println(a+b+c); public Gou(int e,int f ,int g) a=e;b=f;c=g; System.out.println(*); System.out.println(a+b+c); public static void main(String public static void main(String args)args) Gou gg=new Gou();new Gou(); Gou gg1=new Gou(7,

41、8,9);new Gou(7,8,9); Gou gg2=new Gou(11,12,13);new Gou(11,12,13); 无参数 构造函 数 有参数 构造函 数 调用构造方法 Gou() 调用构造方法 Gou(int,int, int) 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 l注:如果定义类的时候不自己写构成方法,系如果定义类的时候不自己写构成方法,系 统编译器会自动给你一个不带参数的构造方法统编译器会自动给你一个不带参数的构造方法 ,但是如果自己写了一个带参数的构造方法,但是如果自己写了一个带参数的构造方法, 系统就不再为你弄那个不带参数了,要自己写系

42、统就不再为你弄那个不带参数了,要自己写 哦,否则会出错,哦,否则会出错, 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.6 基本方法基本方法 在面向对象的编程中,方法是对象行为的表现。 除了上面介绍的普通方法之外,还有其它类型的方 法,如静态方法、最终方法等。方法之间还可以重 载,这极大的表现了Java的多态性。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.6.1 this this关键字是Java中常用的关键字,可用于任何实例方法内, 指向当前对象。也可指向对其调用当前方法的对象或在需要当前类 类型的对象引用时使用。this关键字用来处理

43、成员变量和参数重名 的情况 。 例: public class Example1 int a; int b; public Example1(int a,int b) this.a=a; this.b=b; public void getA (int a) this.a=a; System.out.println(this.a); public static void main(String public static void main(String args)args) Example1 t=new Example1 t=new Example1(1,2);Example1(1,2); S

44、ystem. System.out.println(out.println(下面输下面输 出的是变量值:出的是变量值:);); System. System.out.println(t.a);out.println(t.a); System. System.out.println(t.b);out.println(t.b); System. System.out.println(out.println(下面调下面调 用方法的值:用方法的值:);); t.getA(9); t.getA(9); System. System.out.println(t.a);out.println(t.a); 窗

45、内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.6.2 方法重载方法重载 在在Java中,同一个类中的中,同一个类中的2个或个或2个以上的方法可个以上的方法可 以有同一个名字,只要它们的参数声明不同即可。在这以有同一个名字,只要它们的参数声明不同即可。在这 种情况下,该方法就被称为重载(种情况下,该方法就被称为重载(overloaded),这个),这个 过程称为方法重载(过程称为方法重载(method overloading)。)。 方法重载是Java实现多态性的一种方式。调用方法时通 过传递给它们的不同个数和类型的参数来决定具体使用 哪个方法,这就是多态性。 窗内网,免

46、费看视频,轻松学编程 java面向对象特性学Java必看 3.6.2 方法重载方法重载 当一个重载方法被调用时,Java用参数的类型和(或)数 量来表明实际调用的重载方法的版本。因此,每个重载方法的 参数的类型或数量必须是不同的。虽然每个重载方法可以有不 同的返回类型,但返回类型并不足以区分所使用的是哪个方法。 当Java调用一个重载方法时,参数与调用参数匹配的方法被执 行。 在使用重载要注意以下的几点: l 在使用重载时只能通过不同的参数样式。在使用重载时只能通过不同的参数样式。 l 不能通过访问权限、返回类型、抛出的异常进行重载。不能通过访问权限、返回类型、抛出的异常进行重载。 l 方法的

47、异常类型和数目不会对重载造成影响。方法的异常类型和数目不会对重载造成影响。 l 对于继承来说,如果某一方法在父类中的访问权限是对于继承来说,如果某一方法在父类中的访问权限是 priavte,那么就不能在子类对其进行重载,如果定义,也只是,那么就不能在子类对其进行重载,如果定义,也只是 定义了一个新方法,而不会达到重载的效果。定义了一个新方法,而不会达到重载的效果。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 public class Example1 / 定义定义Box类类 void test() System.out.println(没有参数); void test(

48、int a) System.out.println(值a:+a); void test(int a ,int b) System.out.println(值a,b:+a+,b= +b); double test(double a)double test(double a) System.out.println(double值 a:+a); return areturn a* *a;a; public static void public static void main(String main(String args)args) Example1 ex=new Example1();Examp

49、le1 ex=new Example1(); double d; double d; ex.test(); ex.test(); ex.test(10); ex.test(10); ex.test(10,20); ex.test(10,20); d= ex.test(2.2); d= ex.test(2.2); System. System.out.println(doubleout.println(double值值a a 的平方的平方:+d);:+d); 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 class OverloadDemo void test() Syst

50、em.out.println(No parameters); void test(int a) System.out.println(a: + a); void test(int a,int b) System.out.println(a and b: + a + + b); double test(double a) System.out.println(double a: + a); return a*a; public class Gouzao public static void main(String args) OverloadDemo ob = new OverloadDemo(

51、); double result; ob.test(); ob.test(10); ob.test(10,20); result = ob.test(123.25); System.out.println(Result of ob.test(123.25): + result); 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.6.3 静态变量和方法静态变量和方法 在Java语言中,没有实际意义上的全局变量, 变量最大作用域范围就是类。如果两个类或多个类 之间需要共享数据,单纯依靠参数进行传递,就会 花费大量的代码去完成。实际上,我们完全可以利 用Java语言的静态变量

52、实现数据的共享。在Java语 言中,被static关键字修饰的块、方法和变量被称为 静态块、静态方法和静态变量。 类中的静态变量、方法或代码块属于类属于类,而不不 属于某个特定的对象属于某个特定的对象。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 3.6.3 静态变量和方法静态变量和方法 u static修饰符修饰符 static(静态)修饰符用来修饰类的成员变量和成员方法, 以使它们成为静态成员(又称为类成员)。静态成员存储于类的 存储区,属于整个类,而不属于一个具体的对象。因为静态 成员属于整个类,所以它被所有该类对象共享。在不同的类 对象中访问静态成员,访问的是同

53、一个。 用static修饰的成员变量又称为类变量,不加static修饰的 成员变量又叫实例变量。 l实例变量依附于具体的对象实例,它的值因具体对象实例的实例变量依附于具体的对象实例,它的值因具体对象实例的 不同而不同。不同而不同。 l类变量为该类的所有对象所共享,它的值不因类的对象不同类变量为该类的所有对象所共享,它的值不因类的对象不同 而不同。而不同。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 用static修饰的方法为静态方法,又叫类方法;无static 修饰的方法为实例方法。类方法是该类的所有对象共享的 方法。 对静态成员的使用一般应注意以下两点: l静态方法不

54、能访问属于某个对象的成员变量,而只能处理 属于整个类的成员变量,即静态方法只能处理静态变量。 l可以使用两种方式调用静态成员,它们的作用相同。 l静态方法不能使用this和super。 l静态方法不能被覆盖为非静态方法 l注意: l在一个类中,静态方法能够直接调用静态成员变量;而对于实例变量,则必 须通过对象名来调用。 变量:类名 . 变量名 或 类对象 . 变量名 方法:类名 . 方法名() 或 类对象 . 方法名() 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 class Example1 / class Example1 / 定义定义BoxBox类类 static

55、 int static int x=0;x=0; Example1()+ Example1()+x;x; public static void main(String args) public static void main(String args) System. System.out.println( Example1.x);out.println( Example1.x); Example1 a1=new Example1(); Example1 a1=new Example1(); Example1 a2=new Example1(); Example1 a2=new Example

56、1(); System. System.out.println( Example1.x);out.println( Example1.x); a1. a1.x=100;x=100; System.System.out.println( Example1.x);out.println( Example1.x); Example1.Example1.x=200;x=200; System.System.out.println( a2.out.println( a2.x x);); 类名.静态变量 对象名.静态变量 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 public c

57、lass ex1 static int i =10; int j; static void setvalue(int x) j=x; System.out.println(+i); void setvalue1(int x) ex1.setvalue(19); System.out.println(+i+ +j); public static void main(String args) ex1.setvalue(9); System.out.println(i); setvalue(87); /System.out.println(j); 窗内网,免费看视频,轻松学编程 java面向对象特性

58、学Java必看 3.6.4 常量和最终方法常量和最终方法 final关键字表示对象是最终形态,关键字表示对象是最终形态,对象是不可改变的意思。fi nal在应用于类、方法和变量时意义不同,但本质一样:final表示不 可改变。 l用在变量的前面表示变量的值不可以改变,此时该变量可以 被称为常量。 lfinal(最终)修饰符用来修饰类、成员方法和成员变量。final的 含义为终极或最终,它修饰的类不能被继承,即final类无子类。 当在类中定义变量时,如果其前面加上final关键字,其初始 化可以在两个地方,一是其定义处,也就是说在final变量定 义时直接给其赋值,二是在构造函数中。这两个地方

59、只能选 其一,要么在定义时给值,要么在构造函数中给值,不能同 时既在定义时给了值,又在构造函数中给另外的值。 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 class Example1 / 定义定义Box类类 final int x=1; public final void getX() x=9; /出现错误 System.out.println(x); public void num() System.out.println(x+1); 窗内网,免费看视频,轻松学编程 java面向对象特性学Java必看 练习:练习:编程创建一个Point类,在其中定义两个变量表 示一个

60、点的坐标值,再定义构造函数初始化为坐标原 点,然后定义一个方法实现点的移动,再定义一个方 法打印当前点的坐标。并创建一个对象验证。 提示:关键代码如下: void move(int newX,int newY) x=newX; y=newY; void print() System.out.println(name+:x=+x+ y=+y); p.print(); p.move(50,50); System.out.println(*after moving*); p.print(); /call method of an object 窗内网,免费看视频,轻松学编程 java面向对象特性学J

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论