java面向对象特性学Java必看.ppt

上传人:wuy****n92 文档编号:70794286 上传时间:2023-01-28 格式:PPT 页数:75 大小:283.50KB
返回 下载 相关 举报
java面向对象特性学Java必看.ppt_第1页
第1页 / 共75页
java面向对象特性学Java必看.ppt_第2页
第2页 / 共75页
点击查看更多>>
资源描述

《java面向对象特性学Java必看.ppt》由会员分享,可在线阅读,更多相关《java面向对象特性学Java必看.ppt(75页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、。共享资料和课程,进群514167678窗内网,免费看视频,轻松学编程 理解面向过程和面向对象区别掌握对象概念了解面向对象开发过程熟练掌握Java类的创建掌握类中的方法和变量的创建掌握创建对象和对象引用熟练掌握常用的基本方法,如静态方法和最终方法掌握继承概念掌握内部类和抽象类的使用窗内网,免费看视频,轻松学编程 现在,作为程序员肯定听说过面向对象编程(OOP)这个奇妙的术语。OOP是当今软件开发中最热门的种方法。面向对象编程与面向过程相比较,是一个全新的编程方式。本节就会介绍编程思路的发展和面向对象编程特点。窗内网,免费看视频,轻松学编程 要明白面向对象编程给程序员带来的好处,是需要了解编程技

3、术发展的历史。在早些时间的计算机年代里,编程是一个十分花费精力的过程。计算机要做的每一步都必须详细入微(没有错误)地编写程序。早期的语言是著名的机器语言,后来进化为汇编语言。u 面向过程 面向过程编程是程序开发首先选择的思路,这些过程语言把代码做成叫做过程或函数的块。每个块的日标是完成某个任务。u 结构化程序设计u 面向对象窗内网,免费看视频,轻松学编程 非面向对象与面向对象的区别l非面向对象的数据不能隐藏,而且数据与方法不够紧密l面向对象的思想l面向对象是一种思想,是指用什么样的思路去写程序,做软件。l真正的面向对象是指用面向对象的思想去在现实生活中解决问题,将现实中解决问题的思想与计算机思

4、想更好地统一起来,能够让计算机模拟现实生活中解决问题的办法。l通过语言来编写程序,模拟人类解决问题的方法思路,而解决问题的最好思想就是在现实中已形成的思想,计算机就是要解决现实中的问题,把现实的问题迁移到计算机中解决。窗内网,免费看视频,轻松学编程 面向对象解决问题的方法思想面向对象解决问题的方法思想例:写一个数组排序程序例:写一个数组排序程序ArraySort.java分析分析java的面向对象的面向对象l传统的程序员写排序代码则一般都会思考怎么排序,用什么循环,如何移用元素等,自己写代码实现排序功能l作为一个java程序员,java是纯粹的面向对象的编程语言,则无需自己写代码实现,一定要转

5、变思想,当java程序员遇到一个问题,要实现一个功能时,则不要一味地想到自己怎么解决问题,而是先想想java中有没有现成的哪个类的哪个方法可以实现和解决问题。这就是面向对象的思想,也就是java的程序设计思想窗内网,免费看视频,轻松学编程 lJava语言其实就是由很多的类组成,每个类有不同的对象,每个对象又有很多方法,所以我们解决问题,编写程序就是调用这些方法来解决问题。排序数组可使用(数组名)来实现。l调用的java类的方法都是经过测试的,sun公司不断更新的方法,肯定是最好的,所以一定要学会运用不同类的不同方法。窗内网,免费看视频,轻松学编程 u类与对象l什么是对象l对象是现实世界中客观存

6、在的,是类的实例,万事万物皆是一个对象。l任何一个对象都有2种特性:特征和行为l一个对象它具有什么特征,我们称它具有什么属性,用属性表示l一个对象它有自己的行为,它具有什么行为,我们称它具有什么方法,用方法表示l任何一个对象都是有属性,有方法的。窗内网,免费看视频,轻松学编程 l什么是类l类是同一类型事物数据的抽象,是对象共性的抽象,是客观对象在人脑中的主观反映,对象则是类的具体化,是类的实例。l类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。ljava中的类与对象的使用l在java中,我们一定是写类写类,因为对象太多,无法写

7、,只能写一个类来代表所有对象l在java中,我们一定是使用对象使用对象,因为类是一个抽象,没有实现,在现实生活中只有具体的对象,所以我们一定是用对象 窗内网,免费看视频,轻松学编程 面向对象主要特征:面向对象主要特征:l 封装性封装性封装是指对一件物品的描述信息是这个物品所特有的,是不能让外界看到的一些成员变量和方法。在Java里成员变量和方法就被封装在类里,需要通过一些特有的方法访问它们。l 继承性继承性继承是发生在类与类之间的。继承可以是单继承,也可以多层继承。l 多态性多态性对象根据所接受的消息而做出的动作。同一消息被不同的对象接受时可以产生完全不同的行为,这种现象称为多态。窗内网,免费

8、看视频,轻松学编程 当我们遵照面向对象方法学的思想进行软件系统开发时,首先要行面向对象的分析(OOAObject Oriented Analysis),其任务是了解问题域所涉及的对象、对象间的关系和作用(即操作),然后构造问题的对象模型,力争该模型能真实地反映出所要解决的“实质问题”。在这一过程中,抽象是最本质、最重要的方法。针对不同的问题性质选择不同的抽象层次,过简或过繁都会影响到对问题的本质属性的了解和解决。窗内网,免费看视频,轻松学编程 u OOA 面向对象的分析方法面向对象的分析方法(OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化

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

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

11、OOP,面向对象程序设计)是一种计算机编程架构。OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。窗内网,免费看视频,轻松学编程 在Java中,完成对功能操作封装的单位称为类。类是有共同特性(属性)和操作(行为)定义的实体,类是用于组合各个对象所共有操作和属性的一种机制。可以根据类具有的属性和方法,赋予类不同的数值,来创建不同的对象实例。窗内网,免费看视频,轻松学编程 类是构造面向对象程序的基本单位,是抽取了同类对象的共同属性和方法形

12、成的对象或实体的“模板”。而对象是现实世界中实体的描述,对象要创建才存在,有了对象才能对对象进行操作。类是对象的模板,对象是类的实例。类是类是Java的核心的核心。由于类定义了一个对象的形式与属性,因此整个Java语言建立在这个逻辑结构之上。同样,类构成了Java面向对象程序设计的基础。任何希望在任何希望在Java程序中实程序中实现的想法都必须封装在类中。现的想法都必须封装在类中。在一个类中,程序的作用体现在方法中。方法是方法是Java创建一个有名字的子程序的方法。创建一个有名字的子程序的方法。当定义一个类时,就声明了该类确切的形式和属性。通过指定类中包含的数据和对这些数据进行操作的代码来定义

13、一个类。窗内网,免费看视频,轻松学编程 创建类的一般格式:创建类的一般格式:修饰符修饰符 classclass 类名类名 extendsextends父类名父类名 implements implements接口名列表接口名列表 成员变量声明成员变量声明 成员方法声明成员方法声明 其中:其中:class、extends和和implements都是都是Java的关键字的关键字(保留字保留字)。类的修饰符主要有类的修饰符主要有public、abstract、final及缺省访问修饰符等四种。及缺省访问修饰符等四种。注意:一个类可以同时有多个修饰符,但是不能有相同的修饰符。当一个注意:一个类可以同时有

14、多个修饰符,但是不能有相同的修饰符。当一个类有多个修饰符时,这些修饰符无先后顺序,可任意排列。类有多个修饰符时,这些修饰符无先后顺序,可任意排列。在在java中允许定义没有任何成员的空类。中允许定义没有任何成员的空类。窗内网,免费看视频,轻松学编程 类的名称要符合标识符的命名规则:类的名称要符合标识符的命名规则:l 不能为不能为Java中的关键字。中的关键字。l 不能包含空格或点号不能包含空格或点号“.”,可以以下划线,可以以下划线“_”、字母或、字母或“$”符号开头。符号开头。l 类的名称的第一个单词的第一个字母通常类的名称的第一个单词的第一个字母通常是大写,第二单词的第一个字母大写,以此类

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

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

17、gth;double width;double width;double height;double height;通过例,我们可以看到,在类中进行成员变量的声明与一通过例,我们可以看到,在类中进行成员变量的声明与一般变量的声明形式完全相同,成员变量的类型可以是任般变量的声明形式完全相同,成员变量的类型可以是任意的,成员变量的名字在一个类中应该保证唯一性。例意的,成员变量的名字在一个类中应该保证唯一性。例的类没有任何方法,下面再看一个有成员方法的类。的类没有任何方法,下面再看一个有成员方法的类。窗内网,免费看视频,轻松学编程 【例例】定义一个名为定义一个名为BoxBox表示立方体的类,包含表示

18、立方体的类,包含doubledouble类型类型的长的长lengthlength、宽、宽widthwidth和高和高heightheight三个成员变量以及设置立三个成员变量以及设置立方体长、宽、高值的方法方体长、宽、高值的方法initBox()initBox()、计算立方体体积的、计算立方体体积的方法方法getVol()getVol()。class Box /class Box /定义定义BoxBox类类 double length;double length;double width;double width;double height;double height;double getVo

19、l()/double getVol()/计算立方体体积的方法计算立方体体积的方法getVol()getVol()return length*width*height;return length*width*height;void initBox(double l,double w,double h)void initBox(double l,double w,double h)/初始化立方体长宽高值初始化立方体长宽高值 length=l;width =w;height=h;length=l;width =w;height=h;窗内网,免费看视频,轻松学编程 【例】定义一个名为Box表示立方体的

20、类,包含double类型的长length、宽width和高height三个成员变量以及设置立方体长、宽、高值的方法initBox()、计算立方体体积的方法getVol()。class Box /定义Box类 double length;double width;double height;double getVol()/计算立方体体积的方法getVol()return length*width*height;void initBox(double l,double w,double h)/初始化立方体长宽高值 length=l;width =w;height=h;窗内网,免费看视频,轻松学编程

21、 练习:创建一个电视机类,它包含:练习:创建一个电视机类,它包含:属性:尺寸、型号、生产厂商 方法:打开、关闭、欣赏节目窗内网,免费看视频,轻松学编程 一旦定义了所需的类,就创建了一种新的数据类型,使用类类一旦定义了所需的类,就创建了一种新的数据类型,使用类类型定义的变量叫型定义的变量叫对象对象。对象创建类的变量称为类的实例化。对象是类的一个实例。类的对象是在程序运行中创建生成的,其所占的空间在程序运行中动态分配。当一个类的对象完成了它的使命,为节省资源,Java的垃圾回收程序就会自动收回这个对象所占的空间,即类对象有自己的生命周期。Java对象的生命对象的生命周期大致包括三个阶段:对象的声明

22、和创建,对象的使用,对周期大致包括三个阶段:对象的声明和创建,对象的使用,对象的清除。象的清除。如:如:Box box1;Box box1;定义的定义的box1box1是一个对类型为类是一个对类型为类BoxBox的对象的引用,的对象的引用,box1box1不是对象不是对象本身,可理解为指针,可以指向类本身,可理解为指针,可以指向类BoxBox的某一个具体的对象(实的某一个具体的对象(实例)。例)。窗内网,免费看视频,轻松学编程 1 1创建对象创建对象创建类的对象一般需要两步:创建类的对象一般需要两步:第一步,声明该类型的一个变量;第一步,声明该类型的一个变量;第二步,用第二步,用newnew运

23、算符为对象动态分配运算符为对象动态分配(即在运行时分配即在运行时分配)内内存空间,并返回对它的一个引用,这个引用被存储在该存空间,并返回对它的一个引用,这个引用被存储在该变量中。变量中。利用利用newnew创建类的对象的通用形式如下:创建类的对象的通用形式如下:类对象名类对象名 =new=new 类名类名();();例如,创建一个例如,创建一个BoxBox类的对象类的对象myBoxmyBox可用以下语句可用以下语句 Box myBox;Box myBox;/声明一个对象声明一个对象 myBox=new Box();/myBox=new Box();/创建一个对象创建一个对象窗内网,免费看视频,

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

25、一不可)。(缺一不可)。NewNew主要作用是在创建对象时,开辟主要作用是在创建对象时,开辟一块内存,而内存空间的大小由构造函数决定。一块内存,而内存空间的大小由构造函数决定。窗内网,免费看视频,轻松学编程 2 2使用对象使用对象创建了类的对象后,就可以对对象的各个成员进行访问,创建了类的对象后,就可以对对象的各个成员进行访问,以进行各种处理。访问对象成员的通用形式为以进行各种处理。访问对象成员的通用形式为 类对象名类对象名 .成员变量名成员变量名 类对象名类对象名 .成员方法名成员方法名()()/括号不能省略括号不能省略运算符“.”称为成员运算符,在类对象名和成员变量名、成员方法之间起到连接

26、的作用,以此指明是哪个对象的成员。从上面的访问形式,可以看出,要使用对象变量首先要构造对象,获得类对象名,即类变量名。窗内网,免费看视频,轻松学编程 【例例】利用上例定义的利用上例定义的BoxBox类,计算长、宽、高分别为类,计算长、宽、高分别为5 5、4 4、3 3的立方体体积。的立方体体积。public class BoxDemoOnepublic class BoxDemoOne public static void main(String args)public static void main(String args)Box myBox=new Box();Box myBox=new

27、 Box();double vol;double vol;myBox.length myBox.length=5;=5;myBox.width=4;myBox.width=4;myBox.height=3;myBox.height=3;vol=myBox.length*myBox.width*myBox.height;vol=myBox.length*myBox.width*myBox.height;(立方体的体积是:立方体的体积是:+vol);+vol);窗内网,免费看视频,轻松学编程 注意:要编译成功,必须将例5.1定义的Box类置于本程序中,以生成Box.class和BoxDemoOne

28、.class两个字节码文件,程序运行结果如下:长方体的体积是:60.0当程序需要更多的类对象时,可用new运算符多次创建该类的对象,然后按例5.3中的代码形式进行长方体体积的运算。这样一来,程序中对成员变量的访问赋值语句会很多,显得程序不够紧凑。更好的方法是在类定义中加入可对成员数据进行操作的成员方法(如例所定义的类Box),可使程序更加有效率。例p90窗内网,免费看视频,轻松学编程 3 3清除对象清除对象在java中,有自动内存管理系统的垃圾收集器,会定时或在内存不足时,自动回收垃圾对象所占的内存。程序员使用new关键字来为对象分为配空间释放对象时,只需要将对象所有引用赋值null。其语法格

29、式如下所示:objPerson=null;窗内网,免费看视频,轻松学编程 当使用不同的构造方法或参数数据创建对象时,就会产生大量的、当使用不同的构造方法或参数数据创建对象时,就会产生大量的、不同的对象。但这些对象有一个特点,就是都是来源于同一个类。这不同的对象。但这些对象有一个特点,就是都是来源于同一个类。这些对象之间,可以进行相应的引用。些对象之间,可以进行相应的引用。例:例:class Objdouble d;public Obj(double dd)d=dd;public void getD()System.out.println(d);public static void main(S

30、tring args)Obj Obj1=new Obj(2.34);Obj Obj2=new Obj(3.34);Obj1.getD();Obj2.getD();Obj1=Obj2;/对象引用对象引用Obj1.getD();窗内网,免费看视频,轻松学编程 练习:定义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()ret

31、urn 2*PI*r;public static void main(String args)public static void main(String 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);窗内网,免费看视频,轻松学编程 构造方法是类中一种特殊的方法构造方法是类中一种特殊的方法,用来初始化该类,用来初始化该类的一个新的对象。的一个新

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

33、法名必须与类名相同。方法名必须与类名相同。l不要声明返回类型不要声明返回类型。不能被不能被static、final、synchronized、abstract和和native修饰。修饰。窗内网,免费看视频,轻松学编程 构造方法可以分为参数化构造方法和隐式构造方法,参数化构造方法即在构造方法中带有参数,隐式构造方法就是系统默认的构造方法。一个类被实例化一个类被实例化,也就是被也就是被new的时候的时候,最先执行的是最先执行的是 构构造函数造函数(如果你有留心如果你有留心,你会发现很多类里面根本没有写构你会发现很多类里面根本没有写构造函数造函数)。在在java类中,如果不显示声明构造函数,类中,如

34、果不显示声明构造函数,JVM 会给该类会给该类一个默认的构造函数。一个默认的构造函数。构造函数的主要作用构造函数的主要作用:一是用来实例化该类。一是用来实例化该类。二是让该类实例化的时候执行哪些方法,初始化哪些属二是让该类实例化的时候执行哪些方法,初始化哪些属性。性。窗内网,免费看视频,轻松学编程 【例】利用构造方法实例。public class Gou /定义定义Box类类 int 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

35、 g)a=e;b=f;c=g;System.out.println(*);System.out.println(a+b+c);public static void main(String args)public static void main(String args)Gou gg=new Gou();new Gou();Gou gg1=new Gou(7,8,9);new Gou(7,8,9);Gou gg2=new Gou(11,12,13);new Gou(11,12,13);无参数构造函数有参数构造函数调用构造方法Gou()调用构造方法Gou(int,int,int)窗内网,免费看视频

36、,轻松学编程 l注:如果定义类的时候不自己写构成方法,系如果定义类的时候不自己写构成方法,系统编译器会自动给你一个不带参数的构造方法,统编译器会自动给你一个不带参数的构造方法,但是如果自己写了一个带参数的构造方法,系但是如果自己写了一个带参数的构造方法,系统就不再为你弄那个不带参数了,要自己写哦,统就不再为你弄那个不带参数了,要自己写哦,否则会出错,否则会出错,窗内网,免费看视频,轻松学编程 在面向对象的编程中,方法是对象行为的表现。除了上面介绍的普通方法之外,还有其它类型的方法,如静态方法、最终方法等。方法之间还可以重载,这极大的表现了Java的多态性。窗内网,免费看视频,轻松学编程 thi

37、s关键字是Java中常用的关键字,可用于任何实例方法内,指向当前对象。也可指向对其调用当前方法的对象或在需要当前类类型的对象引用时使用。this关键字用来处理成员变量和参数重名的情况。例: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 args)public static void main(String

38、args)Example1 t=new Example1(1,2);Example1 t=new Example1(1,2);System.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)

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

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

41、影响。l 对于继承来说,如果某一方法在父类中的访问权限是对于继承来说,如果某一方法在父类中的访问权限是priavte,那么就不能在子类对其进行重载,如果定义,也只是,那么就不能在子类对其进行重载,如果定义,也只是定义了一个新方法,而不会达到重载的效果。定义了一个新方法,而不会达到重载的效果。窗内网,免费看视频,轻松学编程 public class Example1 /定义定义Box类类 void test()System.out.println(没有参数);void test(int a)System.out.println(值a:+a);void test(int a,int b)Syste

42、m.out.println(值a,b:+a+,b=+b);double test(double a)double test(double a)System.out.println(double值a:+a);return a*a;return a*a;public static void main(String public static void main(String args)args)Example1 ex=new Example1();Example1 ex=new Example1();double d;double d;ex.test();ex.test();ex.test(10)

43、;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);窗内网,免费看视频,轻松学编程 class OverloadDemo void test()System.out.println(No parameters);void test(int a)System.out.println(a:+a);void test(int a,int b)System.out.pr

44、intln(a and b:+a+b);double test(double a)(double a:+a);return a*a;public class Gouzao public static void main(String args)OverloadDemo ob=new OverloadDemo();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);窗内网,免费看视频,轻松学编程

45、 在Java语言中,没有实际意义上的全局变量,变量最大作用域范围就是类。如果两个类或多个类之间需要共享数据,单纯依靠参数进行传递,就会花费大量的代码去完成。实际上,我们完全可以利用Java语言的静态变量实现数据的共享。在Java语言中,被static关键字修饰的块、方法和变量被称为静态块、静态方法和静态变量。类中的静态变量、方法或代码块属于类属于类,而不不属于某个特定的对象属于某个特定的对象。窗内网,免费看视频,轻松学编程 u static修饰符修饰符static(静态)修饰符用来修饰类的成员变量和成员方法,以使它们成为静态成员(又称为类成员)。静态成员存储于类的存储区,属于整个类,而不属于一

46、个具体的对象。因为静态成员属于整个类,所以它被所有该类对象共享。在不同的类对象中访问静态成员,访问的是同一个。用static修饰的成员变量又称为类变量,不加static修饰的成员变量又叫实例变量。l实例变量实例变量依附于具体的对象实例,它的值依附于具体的对象实例,它的值因具体对象实例的因具体对象实例的不同而不同。不同而不同。l类变量类变量为该类的所有对象所共享,它的值为该类的所有对象所共享,它的值不因类的对象不同不因类的对象不同而不同。而不同。窗内网,免费看视频,轻松学编程 用static修饰的方法为静态方法,又叫类方法;无static修饰的方法为实例方法。类方法是该类的所有对象共享的方法。对

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

48、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 Example1();System.System.out.pr

49、intln(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););类名.静态变量对象名.静态变量窗内网,免费看视频,轻松学编程 public class ex1static int i=10;int j;static void setvalue(int x)j

50、=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);窗内网,免费看视频,轻松学编程 final关键字表示对象是最终形态,关键字表示对象是最终形态,对象是不可改变的意思。final在应用于类、方法和变量时意义不同,但本质一样:final表示不可改变。l用在

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁