《【教学课件】第7章类和对象.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章类和对象.ppt(107页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7章章类和对象类和对象本章要点本章要点u了解面向对象的基本概念了解面向对象的基本概念u掌握掌握类类的定义的定义u掌握掌握成员变量成员变量与与局部变量局部变量的定义的定义u掌握掌握普通方法普通方法与与构造方法构造方法的定义的定义u掌握掌握this关键字关键字/访问权限限定符访问权限限定符/static关键字关键字/final关键字关键字的用途的用途u掌握包的定义与使用掌握包的定义与使用u了解注解的使用了解注解的使用第第7章章类和对象类和对象n n7.1面向对象编程基本概念面向对象编程基本概念n n7.2类和对象类和对象n n7.3注解注解主要内容主要内容7.1面向对象编程基本概念面向对象编程
2、基本概念n7.1.1什么是对象什么是对象n7.1.2什么是类什么是类n7.1.3什么是封装什么是封装n7.1.4什么是继承什么是继承n7.1.5什么是多态什么是多态n结构化与面向对象结构化与面向对象7.1面向对象编程基本概念面向对象编程基本概念7.1面向对象编程基本概念面向对象编程基本概念n面向对象思想是人类最自然的一种思考方式面向对象思想是人类最自然的一种思考方式n它将所有预处理的问题它将所有预处理的问题抽象为对象抽象为对象,同时了,同时了解这些对象具有解这些对象具有相应的属性相应的属性以及展示这些以及展示这些对对象的行为象的行为,以解决这些对象面临的一些实际,以解决这些对象面临的一些实际问
3、题,这样就在程序开发中引入了面向对象问题,这样就在程序开发中引入了面向对象设计的概念。设计的概念。7.1面向对象编程基本概念面向对象编程基本概念7.1.1什么是对象什么是对象n现实世界中,随处可见的一种事物就是对象现实世界中,随处可见的一种事物就是对象n对象就是客观世界中存在的人、事和物体等对象就是客观世界中存在的人、事和物体等实体。实体。n人类解决问题的方式总是将复杂的事物简单人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分化,于是就会思考这些对象都是由哪些部分组成的。组成的。n对象对象(object),对象是自然物体(如汽车、,对象是自然物体(如汽车、房屋、狗)
4、,也可以是社会生活中一种逻辑房屋、狗),也可以是社会生活中一种逻辑结构(如班级、部门、组织),甚至一篇文结构(如班级、部门、组织),甚至一篇文章、一个图形、一项计划等都可以视作对象。章、一个图形、一项计划等都可以视作对象。对象是构成系统的基本单位,在实际社会对象是构成系统的基本单位,在实际社会生活中,人们都是在不同的对象中活动的。生活中,人们都是在不同的对象中活动的。7.1.1什么是对象什么是对象7.1.1什么是对象什么是对象n通常将对象划分为两个部分,即通常将对象划分为两个部分,即动态部分动态部分与与静静态部分态部分。静态部分,顾名思义,就是不能动的部分,这个部静态部分,顾名思义,就是不能动
5、的部分,这个部分被称为分被称为“属性属性”。任何对象都会具备其自身属性,。任何对象都会具备其自身属性,例如一个人,它包括高矮、胖瘦、性别、年龄等。例如一个人,它包括高矮、胖瘦、性别、年龄等。然而具有这些属性的人会执行哪些动作也是一个值然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人走,这些是这个人具备的行为具备的行为(动态部分)(动态部分)n人类通过探讨对象的属性和观察对象的行为了人类通过探讨对象的属性和观察对象的行为了解对象。解对象。n任何一个对象都应当具有这两个要素,任何一个对象都应当具有这
6、两个要素,属性属性(attribute)和和行为行为(behavior),一个,一个对象往往由一组属性和一组行为构成,对象往往由一组属性和一组行为构成,凡是具备属性和行为这两个要素的,都凡是具备属性和行为这两个要素的,都可以作为对象可以作为对象.7.1.1什么是对象什么是对象7.1.1什么是对象什么是对象n在计算机的世界中,面向对象程序设计的思在计算机的世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界想要以对象来思考问题,首先要将现实世界的实体的实体抽象为对象抽象为对象,然后考虑这个对象具备,然后考虑这个对象具备的的属性和行为属性和行为。7.1.1什么是对象什么是对象n例如,
7、现在面临例如,现在面临一只大雁要从北方飞往南方一只大雁要从北方飞往南方这这样一个实际问题,试着以面向对象的思想来解样一个实际问题,试着以面向对象的思想来解决这一实际问题。步骤如下:决这一实际问题。步骤如下:n1)首先可以从这一问题中)首先可以从这一问题中抽象出对象抽象出对象,这里,这里抽象出的对象为大雁。抽象出的对象为大雁。n2)然后)然后识别这个对象的属性识别这个对象的属性。对象具备的属。对象具备的属性都是静态属性,例如大雁有一对翅膀、黑色性都是静态属性,例如大雁有一对翅膀、黑色的羽毛等。这些属性如图所示。的羽毛等。这些属性如图所示。7.1.1什么是对象什么是对象n3)接着是)接着是识别这个
8、对象的动态行为识别这个对象的动态行为,即这只,即这只大雁可以进行的动作,例如飞行、觅食等,这大雁可以进行的动作,例如飞行、觅食等,这些行为都是因为这个对象基于其属性而具有的些行为都是因为这个对象基于其属性而具有的动作。动作。n4)识别出这些对象的)识别出这些对象的属性和行为属性和行为后,这个对后,这个对象就被定义完成。象就被定义完成。7.1.1什么是对象什么是对象n实质上究其本质,所有的大雁都具有以上的实质上究其本质,所有的大雁都具有以上的属性和行为,可以将这些属性和行为封装起属性和行为,可以将这些属性和行为封装起来以描述大雁这类动物。来以描述大雁这类动物。n由此可见,由此可见,类实质上就是封
9、装对象属性和行类实质上就是封装对象属性和行为的载体,而对象则是类抽象出来的一个实为的载体,而对象则是类抽象出来的一个实例例,二者之间的关系如图,二者之间的关系如图7-3所示。所示。7.1.1什么是对象什么是对象7.1.1什么是对象什么是对象n人人数据数据(属性属性)nStringname;intage;nintid;方法方法(行为行为)n生物行为生物行为eat(),sleep(),n社会行为社会行为work(),study(),7.1.2什么是类什么是类n类就是同一类事物的统称。类就是同一类事物的统称。如果将现实世界中的一个事物抽象成对象,如果将现实世界中的一个事物抽象成对象,类就是这类对象的
10、统称,比如鸟类、家禽类就是这类对象的统称,比如鸟类、家禽类、人类等。类、人类等。n类是构造对象时所依赖的规范类是构造对象时所依赖的规范。比如,一只鸟具有一对翅膀,而它可以通比如,一只鸟具有一对翅膀,而它可以通过这对翅膀飞行,而基本上所有的鸟都具过这对翅膀飞行,而基本上所有的鸟都具有翅膀这个特性和飞行的技能,有翅膀这个特性和飞行的技能,这样的具这样的具有相同特性和行为的一类事物就称为类有相同特性和行为的一类事物就称为类。7.1.2什么是类什么是类n对象就是符合某个类定义所产生出来的实例对象就是符合某个类定义所产生出来的实例。更为恰当的描述是:类是世间事物的抽象称更为恰当的描述是:类是世间事物的抽
11、象称呼,而对象则是这个事物相对应的实体。呼,而对象则是这个事物相对应的实体。n如果面临实际问题,通常需要实例化类对象来如果面临实际问题,通常需要实例化类对象来解决。解决。比如解决大雁南飞的问题,这里只能拿这只比如解决大雁南飞的问题,这里只能拿这只大雁来处理这个问题,不能拿大雁类或是鸟大雁来处理这个问题,不能拿大雁类或是鸟类来解决。类来解决。7.1.2什么是类什么是类n类是封装对象的属性和类是封装对象的属性和行为的载体行为的载体,反过来说,反过来说具有相同属性和行为的具有相同属性和行为的一类实体被称为类一类实体被称为类。n例如一个鸟类,鸟类封例如一个鸟类,鸟类封装了所有鸟的共同属性装了所有鸟的共
12、同属性和应具有的行为,其结和应具有的行为,其结构如图构如图7-4所示。所示。7.1.2什么是类什么是类n说明:在说明:在Java语言中,类中对象的行为是语言中,类中对象的行为是由由方法方法的形式定义的,对象的属性是由的形式定义的,对象的属性是由成成员变量员变量的形式定义的,一个类包括对象的的形式定义的,一个类包括对象的属性和方法。属性和方法。7.1.3什么是封装什么是封装n面向对象程序设计具有以下特点:面向对象程序设计具有以下特点:封装性封装性继承性继承性多态性多态性n封装是面向对象编程的核心思想,封装是面向对象编程的核心思想,将对象的将对象的属性和行为封装起来属性和行为封装起来,而将对象的属
13、性和行,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。藏其实现细节,这就是封装的思想。7.1.3什么是封装什么是封装n采用采用封装的思想保证了类内部数据结构的完整封装的思想保证了类内部数据结构的完整性性,用户不能轻易直接操纵此数据结构,而只,用户不能轻易直接操纵此数据结构,而只能执行能执行类允许公开的数据类允许公开的数据。这样避免了外部对。这样避免了外部对内部数据的影响,提高程序的可维护性。内部数据的影响,提高程序的可维护性。7.1.4什么是继承什么是继承n类与类之间同样具有关系,类之间这种关系类与类之间同样具有关
14、系,类之间这种关系被称为关联。被称为关联。n关联是描述两个类之间的一般二元关系。关联是描述两个类之间的一般二元关系。n两个类之间的关系有很多种,两个类之间的关系有很多种,继承继承是关联中是关联中的一种。的一种。n当处理一个问题时,可以将一些有用的类保当处理一个问题时,可以将一些有用的类保留下来,当遇到同样问题时拿来复用。留下来,当遇到同样问题时拿来复用。n如果在软件开发中已建立了一个名为如果在软件开发中已建立了一个名为A的类,的类,又想建立一个名为又想建立一个名为B的类,而后者与前者内容的类,而后者与前者内容基本相同,只是在前者基础上增加一些新的基本相同,只是在前者基础上增加一些新的属性和行为
15、,显然不必再从头设计一个新类,属性和行为,显然不必再从头设计一个新类,只需在只需在A类的基础上增加一些新的内容即可,类的基础上增加一些新的内容即可,而而B类的对象拥有类的对象拥有A类的全部属性与方法,称类的全部属性与方法,称作作B类对类对A类的继承,在类的继承,在B类中不必重新定义类中不必重新定义已在已在A类中定义过的属性和方法,这种特性在类中定义过的属性和方法,这种特性在面向对象中称作面向对象中称作对象的继承对象的继承。7.1.4什么是继承什么是继承7.1.4什么是继承什么是继承n由于鸽子属于鸟类,鸽子具有鸟类相同的属由于鸽子属于鸟类,鸽子具有鸟类相同的属性和行为。便可以性和行为。便可以在创
16、建信鸽类时将鸟类拿在创建信鸽类时将鸟类拿来复用,并且保留鸟类具有的属性和行为。来复用,并且保留鸟类具有的属性和行为。n不过,并不是所有的鸟都有送信的习惯,因不过,并不是所有的鸟都有送信的习惯,因此还需要此还需要再添加一些信鸽具有的独特属性以再添加一些信鸽具有的独特属性以及行为及行为。n鸽子类保留了鸟类的属性和行为,这样就节鸽子类保留了鸟类的属性和行为,这样就节省了定义鸟和鸽子共同具有的属性和行为的省了定义鸟和鸽子共同具有的属性和行为的时间,这就是继承的基本思想。时间,这就是继承的基本思想。7.1.4什么是继承什么是继承n继承性主要利用特定对象之间的共有属性。继承性主要利用特定对象之间的共有属性
17、。例如,平行四边形是四边形,可以将平行例如,平行四边形是四边形,可以将平行四边形类看作四边形的延伸,平行四边形四边形类看作四边形的延伸,平行四边形复用了四边形的属性和行为,同时添加了复用了四边形的属性和行为,同时添加了平行四边形独有的属性和行为,如平行四平行四边形独有的属性和行为,如平行四边形的对边平行且相等。边形的对边平行且相等。这里可以将平行四边形类看作是从四边形这里可以将平行四边形类看作是从四边形类中继承的。类中继承的。7.1.4什么是继承什么是继承n在在Java语言中将类似于平行四边形的类称为语言中将类似于平行四边形的类称为子类子类,将类似于四边形的类称为,将类似于四边形的类称为父类父
18、类或超类。或超类。n值得注意的是,可以说平行四边形是特殊的值得注意的是,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也四边形,但不能说四边形是平行四边形,也就是说就是说子类的实例都是父类的实例,但不能子类的实例都是父类的实例,但不能说父类的实例是子类的实例说父类的实例是子类的实例。7.1.4什么是继承什么是继承n多态性多态性是指在基类中定义的属性或方法被派是指在基类中定义的属性或方法被派生类继承后,可以具有不同的数据类型或表生类继承后,可以具有不同的数据类型或表现出不同的行为。现出不同的行为。n为了实现多态性,需要在派生类中为了实现多态性,需要在派生类中更改更改从基从基类中自动
19、继承来的数据类型或方法。类中自动继承来的数据类型或方法。n这种为了替换基类的部分内容而在派生类中这种为了替换基类的部分内容而在派生类中重新进行定义的操作,在面向对象的概念中重新进行定义的操作,在面向对象的概念中称为称为覆盖覆盖。7.1.5什么是多态什么是多态7.2类和对象类和对象n7.2.1访问权限修饰符访问权限修饰符n7.2.2类的定义类的定义n7.2.3成员变量的定义成员变量的定义n7.2.4普通方法的定义普通方法的定义n7.2.5局部变量的定义局部变量的定义n7.2.6构造方法的定义构造方法的定义n7.2.7方法参数的传递方法参数的传递7.2类和对象类和对象n7.2.8对象创建和使用对象
20、创建和使用n7.2.9this关键字的用途关键字的用途n7.2.10static关键字的用途关键字的用途n7.2.11final关键字的用途关键字的用途n7.2.12包的定义与使用包的定义与使用7.2.1访问权限修饰符访问权限修饰符n主要包括主要包括private、public和和protected,用来,用来决定类中成员变量和方法能否被其它类访问。决定类中成员变量和方法能否被其它类访问。n类类的访问权限:的访问权限:public:可以供所有的类访问。:可以供所有的类访问。默认默认(包访问权限包访问权限):即如果写了一个类没即如果写了一个类没有写访问权限修饰符,那么就是默认的访有写访问权限修饰
21、符,那么就是默认的访问权限,同一个包下的类都可以访问到。问权限,同一个包下的类都可以访问到。protected和和private只能应用只能应用内部类内部类,不能,不能应用于顶层类。应用于顶层类。7.2.1访问权限修饰符访问权限修饰符n类访问权限说明:类访问权限说明:每个编译单元(类文件)都仅能有每个编译单元(类文件)都仅能有一个一个publicclass。publicclass的名称(包含大小写)必须和的名称(包含大小写)必须和其其类文件类文件同名同名。一个类文件一个类文件(*.java)中可以中可以不存在不存在publicclassclass不可以是不可以是private和和protect
22、ed。(除。(除了内部类之外)了内部类之外)。7.2.1访问权限修饰符访问权限修饰符n公共类公共类的的成员变量和成员方法成员变量和成员方法的访问权限:的访问权限:public成员,除了可以在本类使用这些数据成员,除了可以在本类使用这些数据之外,还可以在子类和其他包中的类中使用之外,还可以在子类和其他包中的类中使用private成员只能在本类中被使用,在子类成员只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可中是不可见的,并且对其他包的类也是不可见的。见的。protected成员可以由子类访问,如果既不成员可以由子类访问,如果既不是同包,也不是子类,则不可见。是同包,也不是子类,
23、则不可见。访问权限访问权限修饰符修饰符同一个类同一个类同一个包同一个包子类子类(异包)(异包)非同包非同包public可见可见可见可见可见可见可见可见protected可见可见可见可见可见可见不可见不可见无修饰符无修饰符可见可见可见可见不可见不可见不可见不可见private可见可见不可见不可见不可见不可见不可见不可见表表7-1访问权限修饰符在不同位置的访问范围访问权限修饰符在不同位置的访问范围7.2.1访问权限修饰符访问权限修饰符7.2.1访问权限修饰符访问权限修饰符n对于一个类内部定义的成员,无论使用何种对于一个类内部定义的成员,无论使用何种修饰符都是可以被这个类访问的。修饰符都是可以被这个
24、类访问的。n在同一个包中,不管类是否存在继承关系,在同一个包中,不管类是否存在继承关系,仅有仅有private修饰的成员不能够被其他类使修饰的成员不能够被其他类使用。用。n在不同的包中,如果两个类存在继承关系,在不同的包中,如果两个类存在继承关系,则使用则使用protected修饰的成员可见。修饰的成员可见。n在全局范围,仅有在全局范围,仅有public修饰的成员可见。修饰的成员可见。7.2.2类的定义类的定义n类是用来定义类是用来定义一组对象共具的状态和行为的一组对象共具的状态和行为的模板模板。而对象是现实世界中个体或事物的抽。而对象是现实世界中个体或事物的抽象表示,并封装了它们的属性和行为
25、。象表示,并封装了它们的属性和行为。n类声明了这些共同的特性,对象在使用之前,类声明了这些共同的特性,对象在使用之前,必须定义该对象的类,知道了对象的类型,必须定义该对象的类,知道了对象的类型,才能够访问它的属性和行为。才能够访问它的属性和行为。n在在Java语言中,语言中,对象的行为被定义成对象的行为被定义成类的方类的方法法,对象的属性定义为,对象的属性定义为类成员变量类成员变量。所以一所以一个类包括对象的属性和行为。个类包括对象的属性和行为。7.2.2类的定义类的定义表示类表示类的属性的属性表示类表示类的行为的行为classclassName成员变量成员变量成员方法成员方法7.2.2类的定
26、义类的定义n通常情况下类的定义可以依次包括如下内容:通常情况下类的定义可以依次包括如下内容:访问权限修饰符访问权限修饰符,例如,例如public、private等。等。类名类名,通常是首字母大写的英语名词。,通常是首字母大写的英语名词。类的父类类的父类,需要使用,需要使用extends关键字关键字。一个一个类仅能有一个父类。类仅能有一个父类。类实现的接口类实现的接口,需要使用,需要使用implements关键关键字。一个类可以实现多个接口,接口名之间字。一个类可以实现多个接口,接口名之间使用逗号分隔。使用逗号分隔。类体类体,使用大括号包围使用大括号包围。public class classNa
27、me extends MyClass implements MyInterface7.2.2类的定义类的定义【例例】定义一个水果类定义一个水果类Fruit,在该类中定义,在该类中定义了一个表示颜色的属性了一个表示颜色的属性color、一个表示种植的、一个表示种植的方法方法plant()、一个表示生长的方法、一个表示生长的方法grow()和一和一个表示收获的方法个表示收获的方法harvest()。7.2.2类的定义类的定义public class Fruit public String color=;/定定义颜义颜色成色成员变员变量量 public void plant()/定定义义种植成种植成
28、员员方法方法 System.out.println(果果树树正在种植正在种植);public void grow()/定定义义生生长长的成的成员员方法方法System.out.println(果果树树正在生正在生长长);public void harvest()/定定义义收收获获的成的成员员方法方法System.out.println(水果已水果已经经收收获获);类名的首字母类名的首字母通常为大写通常为大写Java允许每个文件包含一个或多个类定义,允许每个文件包含一个或多个类定义,但其中最多只能有一个类被声明为但其中最多只能有一个类被声明为public。7.2.3成员变量的定义成员变量的定义n
29、根据变量在类中声明的位置不同,可以分为:根据变量在类中声明的位置不同,可以分为:声明在声明在类中类中的变量叫做的变量叫做成员变量。成员变量。声明在声明在块和方法中块和方法中的变量叫做的变量叫做局部变量。局部变量。声明在声明在方法声明中方法声明中的变量叫做的变量叫做参数。参数。n在声明在声明成员变量成员变量时,时,不必为其初始化不必为其初始化,在声明,在声明局部变量时,必须为其初始化。如果未对成员局部变量时,必须为其初始化。如果未对成员变量进行初始化,其默认初始化值如图。变量进行初始化,其默认初始化值如图。7.2.3成员变量的定义成员变量的定义n成员变量成员变量是在类体中定义的变量,即全局变是在
30、类体中定义的变量,即全局变量,成员变量用于定义对象的状态。量,成员变量用于定义对象的状态。n例如:例如:Student类有类有name、age、sex等成等成员变量分别表示姓名、年龄、性别等状态。员变量分别表示姓名、年龄、性别等状态。public class Studentpublic String name;/姓名姓名public int age;/年龄年龄public String sex;/性别性别7.2.3成员变量的定义成员变量的定义n成员变量是成员变量是给对象使用给对象使用的,每的,每个对象被创建以后,都会有属个对象被创建以后,都会有属于自己的于自己的属性属性,即,即成员变量成员变量
31、。n通过修改这些属性,从而通过修改这些属性,从而改变改变对象的某个状态。对象的某个状态。n不同的实例对象有不同的属性,不同的实例对象有不同的属性,如图所示。如图所示。7.2.3成员变量的定义成员变量的定义【例例7-1】在项目中创建在项目中创建Book类,在该类中定类,在该类中定义书名、出版社、义书名、出版社、ISBN和价格四个成员变量。和价格四个成员变量。public class Book private String title;private String press;private String ISBN;private double price;成员变量必须直接成员变量必须直接定义在定
32、义在类体中类体中,如,如果定义在其他方法果定义在其他方法或代码块中,就会或代码块中,就会成为局部变量,而成为局部变量,而不是成员变量。不是成员变量。7.2.3成员变量的定义成员变量的定义n在声明变量时,需要包含下面在声明变量时,需要包含下面3部分内容:部分内容:修饰符,包括访问权限修饰符等。修饰符,包括访问权限修饰符等。n例如代码中的例如代码中的private。变量的类型,可使用基本类型和引用类型。变量的类型,可使用基本类型和引用类型。n例如代码中的例如代码中的String和和double。变量的名称,通常推荐使用小写英语名词。变量的名称,通常推荐使用小写英语名词。n例如代码中的例如代码中的t
33、itle、press、ISBN和和price。7.2.4普通方法的定义普通方法的定义n成员方法是对象行为的描述。成员方法是对象行为的描述。n面向对象编程中,使用方法来实现面向对象编程中,使用方法来实现对象之间的对象之间的通信通信和和改变对象的属性改变对象的属性。成员方法主要承担外。成员方法主要承担外部操作对象属性的部操作对象属性的接口接口任务。任务。成员变量和成员方法统称为类成员。成员变量和成员方法统称为类成员。修饰符修饰符返回值类型返回值类型方法名方法名(形参表形参表)./方法体方法体return返回值返回值;7.2.4普通方法的定义普通方法的定义n通常情况下,方法由通常情况下,方法由6部分
34、组成,依次是:部分组成,依次是:1)修饰符修饰符,可以是,可以是public、private、protected以及以及static、final等。等。2)返回值返回值,方法运行的结果,如果没有返,方法运行的结果,如果没有返回值需要使用回值需要使用void表明。表明。3)方法名称方法名称,程序将通过该名称调用这个,程序将通过该名称调用这个方法,通常使用首字母小写的英语动词。方法,通常使用首字母小写的英语动词。7.2.4普通方法的定义普通方法的定义n通常情况下,方法由通常情况下,方法由6部分组成,依次是:部分组成,依次是:4)参数列表参数列表,说明方法被调用时,应该向,说明方法被调用时,应该向它
35、传递的数据,放在圆括号内,需要指明参它传递的数据,放在圆括号内,需要指明参数的类型和名称,当方法有多个形式参数时,数的类型和名称,当方法有多个形式参数时,参数之间使用参数之间使用“,”逗号分割;如果方法没逗号分割;如果方法没有参数,可以省略有参数,可以省略“形参表形参表”部分。部分。5)异常列表异常列表,使用,使用throws关键字,在后面关键字,在后面的章节进行讲解。的章节进行讲解。6)方法体方法体,放置在大括号之间的内容。,放置在大括号之间的内容。7.2.4普通方法的定义普通方法的定义n成员方法所处理数据的主要来源成员方法所处理数据的主要来源1)传递给成员方法的参数。)传递给成员方法的参数
36、。2)类中的成员变量。)类中的成员变量。3)在方法体内声明的局部变量。)在方法体内声明的局部变量。4)在方法中调用其他成员方法所得到的返)在方法中调用其他成员方法所得到的返回值。回值。7.2.5局部变量的定义局部变量的定义n局部变量:在成员方法内定义的变量,形参局部变量:在成员方法内定义的变量,形参也被看作是局部变量。也被看作是局部变量。n局部变量只在定义它的方法内有效,在方法局部变量只在定义它的方法内有效,在方法被执行时创建,在方法执行结束时被销毁被执行时创建,在方法执行结束时被销毁,n局部变量在使用时必须进行赋值操作或被初局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。始化
37、,否则会出现编译错误。7.2.5局部变量的定义局部变量的定义【例例7-3】在项目中创建在项目中创建Sum类,在类,在main()方方法中计算法中计算1到到50之间所有整数之和。之间所有整数之和。public class Sum public static void main(String args)int sum=0;for(int i=1;i 51;i+)sum+=i;局部变量的作用域局部变量的作用域注:局部变量(方法的形参)尽量不要和成员变注:局部变量(方法的形参)尽量不要和成员变量同名,否则,局部变量(方法的形参)将覆盖量同名,否则,局部变量(方法的形参)将覆盖该成员变量。该成员变量。7
38、.2.6构造方法的定义构造方法的定义n其功能主要是完成其功能主要是完成对象的初始化对象的初始化,每当类实例,每当类实例化一个对象时,类都会化一个对象时,类都会自动调用自动调用构造方法。构造方法。n构造方法与普通方法的差别主要有以下两点:构造方法与普通方法的差别主要有以下两点:不能有返回值,即不能有返回值,即没有返回值类型没有返回值类型。构造方法的名称与本类的构造方法的名称与本类的类名完全相同类名完全相同。注意:不是注意:不是void类型类型public类类名名(参数列表参数列表)/.构造方法体构造方法体7.2.6构造方法的定义构造方法的定义n在构造方法中可以完成变量赋值、连接数据在构造方法中可
39、以完成变量赋值、连接数据库等初始化工作,库等初始化工作,n如果类中如果类中没有明确定义任何构造方法没有明确定义任何构造方法,则编,则编译器会译器会自动创建一个不带参数的默认构造方自动创建一个不带参数的默认构造方法法。n注意:如果在类中定义的构造方法都不是无注意:如果在类中定义的构造方法都不是无参的构造方法,则编译器不会为类设置一个参的构造方法,则编译器不会为类设置一个默认的无参构造方法默认的无参构造方法,当试图调用无参构造,当试图调用无参构造方法实例化一个对象时,编译器会报错。方法实例化一个对象时,编译器会报错。7.2.6构造方法的定义构造方法的定义n构造方法的特点构造方法的特点方法名与类名相
40、同方法名与类名相同没有返回类型,修饰符没有返回类型,修饰符void也不能有也不能有通常被声明为公有的通常被声明为公有的(public)和成员方法一样,构造方法也可以重载和成员方法一样,构造方法也可以重载主要作用是完成对象的初始化工作主要作用是完成对象的初始化工作不能在程序中显式的调用不能在程序中显式的调用在生成一个对象时,系统会自动调用该类的构在生成一个对象时,系统会自动调用该类的构造方法为新生成的对象初始化造方法为新生成的对象初始化7.2.6构造方法的定义构造方法的定义【例例】定义定义Student类,在类中定义姓名、年龄类,在类中定义姓名、年龄和性别和性别3个成员变量,再定义个成员变量,再
41、定义3个不同参数的构造个不同参数的构造方法,其中有一个是无参数的默认的构造方法。方法,其中有一个是无参数的默认的构造方法。然后定义然后定义sayMyInfo()方法输出自己的信息。方法输出自己的信息。public class Student public String name;public String sex;public int age;public Student()name=未登未登记记;sex=未登未登记记;age=0;public Student(String name)this.name=name;public Student(String name,String sex,in
42、t age)this(name);this.sex=sex;this.age=age;public void sayMyInfo()System.out.println(我的名字是:我的名字是:+name);System.out.println(我是:我是:+sex+生生);System.out.println(我我+age+岁岁了了);public static void main(String args)Student student1=new Student();Student student2=new Student(张张三三);Student student3=new Student
43、(李四李四,男男,14);student1.sayMyInfo();student2.sayMyInfo();student3.sayMyInfo();成员变量的初始化成员变量的初始化n初始化成员变量有初始化成员变量有5个途径:个途径:1)每个数据对应的数据类型有)每个数据对应的数据类型有默认的初默认的初始值始值。2)在)在声明声明的同时赋予相应的初始值。的同时赋予相应的初始值。3)定义)定义成员方法成员方法为成员变量赋值。为成员变量赋值。4)在)在构造方法构造方法中为成员变量赋值。中为成员变量赋值。5)利用)利用初始化块初始化块对成员变量进行初始化对成员变量进行初始化成员变量的初始化成员变量
44、的初始化n利用初始化块对成员变量进行初始化。利用初始化块对成员变量进行初始化。public class Point private int x=1,y=2;x=10;y=20;/初始化块初始化块public Point()public Point(int x1,int y1)x=x1;y=y1;7.2.7方法参数的传递方法参数的传递n在方法的参数列表中,可以使用基本类型和在方法的参数列表中,可以使用基本类型和引用类型,两者的引用类型,两者的传递方式都是值传递传递方式都是值传递。n值传递就是先将参数复制一份,然后将复制值传递就是先将参数复制一份,然后将复制的内容传递到方法中。此时方法操作的内容的
45、内容传递到方法中。此时方法操作的内容与原来的参数无关。与原来的参数无关。private static void swap(String s1,String s2)String t=s1;s1=s2;s2=t;public static void main(String args)String s1=123;String s2=abc;(交换前:交换前:+s1+s2);swap(s1,s2);(交换后:交换后:+s1+s2);交换前:交换前:123 abc交换后:交换后:123 abc7.2.7方法参数的传递方法参数的传递【例例7-7】定义定义Circle类和类和ReferenceDataTyp
46、e,演示使用引用类型作为参数的方法演示使用引用类型作为参数的方法。public class Circle private int x;private int y;public int getX()return x;public void setX(int cX)x=cX;public int getY()return y;public void setY(int cY)y=cY;public class ReferenceDataType private static Circle transform(Circle circle,int x,int y)circle.setX(x);/设置x坐
47、标 circle.setY(y);/设置y坐标 return circle;public static void main(String args)Circle circle=new Circle();System.out.println(进入前+circle);transform(circle,5,5);System.out.println(进入后+circle);7.2.7方法参数的传递方法参数的传递n在在JDK5.0版以后,可以为方法指定版以后,可以为方法指定数量未知数量未知的参数列表的参数列表,这些参数需要具有相同的类型。,这些参数需要具有相同的类型。在使用时,可以将其看成数组,通过遍
48、历数组在使用时,可以将其看成数组,通过遍历数组来获取所指定的参数,获取到的参数的个数将来获取所指定的参数,获取到的参数的个数将根据调用方法时指定的参数个数确定。根据调用方法时指定的参数个数确定。private static void print(String.varargs)for(int i=0;ivarargs.length;i+)System.out.print(varargsi+);private static void print(String.varargs)for(int i=0;i varargs.length;i+)System.out.print(varargsi+);pu
49、blic static void main(String args)print(Java,PHP);System.out.println();print(Java,PHP,Java);类的主方法类的主方法n主方法是类的入口点,它定义了程序从何处主方法是类的入口点,它定义了程序从何处开始,主方法提供对程序流向的控制,开始,主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。编译器通过主方法来执行程序。n主方法的语法如下。主方法的语法如下。publicstaticvoidmain(Stringargs)/方法体方法体主方法也是静主方法也是静态态的,所以要直接在主方法中的,所以要直接在主
50、方法中调调用其他方法,用其他方法,则该则该方法必方法必须须也是静也是静态态的。的。主方法没有返回主方法没有返回值值。主方法的形参为数组。主方法的形参为数组。注:如果在主方法中调用非静态方法注:如果在主方法中调用非静态方法时,可以先实例化该类,再通过时,可以先实例化该类,再通过类的实例调用相应的方法。类的实例调用相应的方法。public static void main(String args)for(int i=0;iargs.length;i+)System.out.println(argsi);类的主方法类的主方法7.2.8对象的创建和使用对象的创建和使用n在在Java语言中通过语言中通过