第三章抽象封装和类.ppt

上传人(卖家):hyngb9260 文档编号:5790952 上传时间:2023-05-09 格式:PPT 页数:74 大小:965.50KB
下载 相关 举报
第三章抽象封装和类.ppt_第1页
第1页 / 共74页
第三章抽象封装和类.ppt_第2页
第2页 / 共74页
第三章抽象封装和类.ppt_第3页
第3页 / 共74页
第三章抽象封装和类.ppt_第4页
第4页 / 共74页
第三章抽象封装和类.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

1、2023-5-91第三章第三章 抽象、封装和类抽象、封装和类重点掌握:重点掌握:抽象与封装抽象与封装 用户自定义类和对象用户自定义类和对象 Java Java 类库概述类库概述2023-5-923.13.1面向过程到面向对象的转变面向过程到面向对象的转变3.2面向对象的基本概念面向对象的基本概念3.3 类类3.4 类的修饰和它的类的修饰和它的“推广空间推广空间”3.5 数据成员数据成员3.6 方法方法第三章第三章 抽象、封装和类抽象、封装和类2023-5-933.13.1面向过程到面向对象的转变面向过程到面向对象的转变使用面向过程使用面向过程描述一件事描述一件事青椒炒牛肉青椒炒牛肉 取出青椒取

2、出青椒 500 g,用刀切,用刀切成成细丝细丝,过过油油 取出牛肉取出牛肉 300 g,切丁,切丁,用醬油、酒、用醬油、酒、淹制淹制 30 分分钟钟 起油起油锅锅、放入牛肉炒及青、放入牛肉炒及青椒大火快炒椒大火快炒1 分半分半 拿出太白粉、水拿出太白粉、水调调在一起,在一起,这个称为这个称为 芡汁。芡汁。將芡汁倒入將芡汁倒入锅中搅拌锅中搅拌,会会产产生生粘粘稠稠现现象象这这叫芶芡叫芶芡完成。完成。使用使用面向对象面向对象描述一件事描述一件事青椒炒牛肉青椒炒牛肉 青椒青椒 数数量量:500 g 处处理理:用刀切成:用刀切成细丝细丝,过过油油 牛肉牛肉 数数量量:300 g 处处理理:切丁,用醬油

3、、酒、:切丁,用醬油、酒、淹制淹制 芡汁芡汁 制制作作:太白粉:太白粉调调上上适适量的水量的水 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡汁芡汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。2023-5-94何为面向对象何为面向对象先定义好参与这件事的物先定义好参与这件事的物品有哪些品有哪些(这些这些物品物品叫做叫做“对象对象”)再定再定义这义这些物品所需的些物品所需的数量数量及及行行为为(这些数这些数量量及及行行为为叫做叫做“属属性性”与与“方法方法”)接下來可用物品接下來可用物品间间的互的互动行为

4、动行为來描述整件事情來描述整件事情是如何是如何发发生的。生的。(这这部部分分的描述的描述称为称为“主程序主程序”)青椒炒牛肉青椒炒牛肉 青椒青椒 数数量量:500 g 处处理理:用刀切成:用刀切成细丝细丝,过过油油 牛肉牛肉 数数量量:300 g 处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹制淹制 芡汁芡汁 制制作作:太白粉:太白粉调调上上适适量的水量的水 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡汁芡汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。2023-5-953.2面向对象的基本概念面向

5、对象的基本概念3.2.1 抽象抽象什么是抽象什么是抽象 抽象就是抽出事物的本质特性而暂时不考虑它抽象就是抽出事物的本质特性而暂时不考虑它们的细节。们的细节。过程抽象和数据抽象过程抽象和数据抽象是常用的两种主要抽象手段。是常用的两种主要抽象手段。2023-5-963.2.2 封装封装将信息隐蔽的过程称为封装将信息隐蔽的过程称为封装。2023-5-97有两方面的原因促使我们控制对成员的访问。有两方面的原因促使我们控制对成员的访问。原因一:原因一:防止程序员接触他们不该接触的东西防止程序员接触他们不该接触的东西通常通常是内部数据类型的设计思想。若只是为了解决特定的问是内部数据类型的设计思想。若只是为

6、了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。题,用户只需操作接口即可,毋需明白这些信息。原因二:原因二:允许库设计人员修改内部结构,不用担心它会允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响对客户程序员造成什么影响。2023-5-983.2.3 对象对象 对象(对象(objectobject)应是实际问题域中有意义的个应是实际问题域中有意义的个体或概念实体。体或概念实体。对象应该以某种方式与系统发生关联,即对对象应该以某种方式与系统发生关联,即对象应该与系统中其他有意义的对象进行象应该与系统中其他有意义的对象进行消息传递消息传递,并提供外部服务。并提供外部服务。

7、2023-5-99l如何理解对象?如何理解对象?(1)(1)所有东西都是对象。可将对象想象成一种新型变量;所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。它保存着数据,但可要求它对自身进行操作。(2)(2)程序是一大堆对象的组合;通过消息传递,各对象程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。知道自己该做些什么。(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。(4)(4)每个对象都有一种类型。根据语法,每个对象都是每个对象都有一种类型。根据语法,每个对象都是某个某个“类类”的一个的一个

8、“实例实例”。(5(5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。2023-5-910对象的三个要素:对象的三个要素:1、对象的标识:对象的名字。、对象的标识:对象的名字。2、属性:对象的静态特征、属性:对象的静态特征3、方法:服务和操作。、方法:服务和操作。汽车汽车行驶,转弯,刹车行驶,转弯,刹车静态属性静态属性动动态态属属性性颜色,马力等颜色,马力等2023-5-911l对象的图形化描述:对象的图形化描述:对象:小李的手表对象:小李的手表静态特征:小李静态特征:小李 指针表指针表 单价单价180元元 银色表带银色表带动态特征:显示当前时间动态特征:显示当前时间

9、修改当前时间修改当前时间2023-5-912实验二实验二-Java语言基础语言基础 掷骰子掷骰子6000次,次,分别统计每一面出现的次数。分别统计每一面出现的次数。(int)(Math.random()*(100+1)2023-5-913limport java.util.Scanner;limport java.math.*;lpublic class AA lpublic static void main(String args)lint count=0,0,0,0,0,0;lfor(int i=0;i 6000;i+)lint result=(int)(Math.random()*6);

10、lcountresult+;ll/print the resultlfor(int i=0;i count.length;i+)lSystem.out.println(i+出现 +counti+次!);lll2023-5-9143.3 类类 3.3.1类的相关概念类的相关概念何何谓谓“类类(Class)”类类是现实世界某些对象的共同特征是现实世界某些对象的共同特征(属性和操作属性和操作)的表示,的表示,对象对象是类的实例。是类的实例。將所需將所需属性属性和和操作操作打包在一起,并给它一打包在一起,并给它一个个名字名字以方便以方便操作操作。类的属性类的属性:就是类的静态属性的简称,指类内包就是类

11、的静态属性的简称,指类内包含的各项数据,如变量或其他类的对象;含的各项数据,如变量或其他类的对象;类的服务类的服务:则被称为成员函数或方法。则被称为成员函数或方法。2023-5-915客戶客戶String User=“Robert”;String Pass=“1234”;Login(User,Pass)class Customer String User=“Robert”;String Pass=“1234”;Login(User,Pass);属属性性方法方法2023-5-916类与对象的关系类与对象的关系类类(Class):对象的设计蓝图对象的设计蓝图对象对象(Object):根据类建造出來

12、的:根据类建造出來的实体实体2023-5-917class Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);Robert=new CustomerPeter=new CustomerLisa=new Customer对象对象类类2023-5-918何谓面向对象程序设计何谓面向对象程序设计把真实世界的物品,以把真实世界的物品,以 class 表現出來表現出來“客戶客戶”class Customer String User=“Robert”;String Pass=“1234”;function

13、Login(User,Pass);RobertPeterLisaRobert=new CustomerPeter=new CustomerLisa=new Customer2023-5-919类的基本定义方法:类的基本定义方法:修饰符修饰符class类名类名 extends 父类父类implements 接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明2023-5-9201关于类头关于类头-class、extends class关键字,在它的后面,应关键字,在它的后面,应跟随新数据类型的名称。跟随新数据类型的名称。(注意不(注意不要把要把class写成写成Class)。父类名跟

14、在父类名跟在extends 关键字后关键字后面,用来说明当前类是哪个已经存面,用来说明当前类是哪个已经存在类的子类,存在继承关系。在类的子类,存在继承关系。2023-5-9211关于类头关于类头-类的修饰符类的修饰符“public”(公共(公共)意味着后续的定义任何人均可使意味着后续的定义任何人均可使用。用。“private”(私有(私有)意味着除您自己、类型的创建者意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。问后续的定义信息。“protected”(受保护的(受保护的)与与“private”相似,只

15、是一相似,只是一个继承的类可访问受保护的成员,但不能访问私有成个继承的类可访问受保护的成员,但不能访问私有成员。员。“friendly”(友好的)(友好的)若某样东西是若某样东西是“友好的友好的”,意味着它只能在这个包装的范围内使用(所以这一访意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作问级别有时也叫作“包装访问包装访问”)2023-5-9221关于类头关于类头-接口名接口名接口是一种与类相似的结构,接口是一种与类相似的结构,只包含常量和抽象方法,目的只包含常量和抽象方法,目的是指明多个对象的共同行为。是指明多个对象的共同行为。接口名跟在接口名跟在implements关键字关

16、键字后面,用来说明当前类中实现后面,用来说明当前类中实现了哪个接口定义的功能和方法。了哪个接口定义的功能和方法。2023-5-9232关于类体关于类体 类体的定义要包括类的具体内容,包括类类体的定义要包括类的具体内容,包括类的属性与方法。的属性与方法。class 2023-5-924Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;变量类型和变量名是声明变量类型和变量名是声明一个变量必不可少的部分。一个变量必不可少的部分。2关于类体关于类体-类的属性类的属性2023-5-9252关于类体关于类体-类的方法

17、类的方法Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参数列表参数列表)方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类中定义的方法通常起到两种作用:类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。二是与其他的类或对象进行数据交流、消息传递等操作。2023-5-926 属性:属性:name Salary hireDay类:类:Employee服务:服务:getName3、类图的描述、类图的描述2023-5-9273.3.2

18、用户程序自定义类用户程序自定义类 Java程序员把注意力放在创建称为类的用户自定程序员把注意力放在创建称为类的用户自定义类型(义类型(user-defined type)上,类也称为程序员定)上,类也称为程序员定义的类型(义的类型(programmer-defined type);每个类都含有数据和一组操作数据的方法:每个类都含有数据和一组操作数据的方法:类中的数据部分称为实例变量。类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。用户定义类型(即类)的实例称为对象。2023-5-928class Employee /构造函数构造函数 public Employee(String

19、 n,double s)name=n;/职工姓名职工姓名 salary=s;/职工工资职工工资 /方法方法1 public String getName()return name;/更多的方法更多的方法/属性的实例属性的实例 private String name;private double salary;2023-5-9293.3.3 创建类及类的实例对象创建类及类的实例对象 对象是类的一个实例,类是同种对象的抽象,对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。是创建对象的模板。在程序中创建一个对象,将在内存中开辟一块在程序中创建一个对象,将在内存中开辟一块空间,其中包括该对象

20、的属性和方法。空间,其中包括该对象的属性和方法。2023-5-9301 1、声明对象、声明对象 格式:类名格式:类名 对象列表;对象列表;例:例:Employee newEmp1,newEmp2;2、建立对象、建立对象 格式:格式:对象名对象名=new 构造方法();构造方法();例:例:newEmp1=new Employee(张三张三,75);newEmp2 =new Employee(“李四李四,75);或合为一步:或合为一步:Employee newEmp2 =new Employee(“李四李四,75);注意:注意:创建对象以某个类为模板,这个类里定义了创建对象以某个类为模板,这个类

21、里定义了哪些属性和方法,新建的对象就必然在内存里拥有哪些属性和方法,新建的对象就必然在内存里拥有相应的属性和方法。相应的属性和方法。相对于简单数据类型,类就是用户自己定义相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型的复杂的抽象数据类型;相对于简单变量,对象就是复杂的既包括数相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。据又包括方法代码的复杂数据单位。2023-5-9313、初始化对象、初始化对象构造函数构造函数 要使用对象,首先必须构造它们,并指定它们的初要使用对象,首先必须构造它们,并指定它们的初始状态,然后将方法应用于对象。始状态,然后将方法应用于对象

22、。在在Java程序设计语言中,使用构造函数(程序设计语言中,使用构造函数(constructor)来构造新的实例。)来构造新的实例。一个构造函数是一个新的方法,一个构造函数是一个新的方法,它的作用是构造它的作用是构造并初始化对象并初始化对象。2023-5-932构造函数是类的一种特殊方法,它的特殊性主要体构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面:现在如下的几个方面:(1)构造函数的方法名与类名相同。)构造函数的方法名与类名相同。(2)构造函数没有返回类型。)构造函数没有返回类型。构造函数可以有构造函数可以有0个个、1个或多个参数。个或多个参数。(3)构造函数的主要作用是完

23、成对类对象的初始化)构造函数的主要作用是完成对类对象的初始化工作。工作。(4)构造函数不能由编程人员显式地直接调用,)构造函数不能由编程人员显式地直接调用,构构造函数总是和造函数总是和new运算符一起被调用。运算符一起被调用。(5)在创建一个类的新对象的同时,系统会自动调)在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。用该类的构造函数为新对象初始化。2023-5-933 Java中可以不定义构造函数,此时系统会自动为该中可以不定义构造函数,此时系统会自动为该系统生成一个默认的构造函数。系统生成一个默认的构造函数。这个构造函数的名字与类名相同,它没有任何形这个构造函数的

24、名字与类名相同,它没有任何形式参数,也不完成任何操作。式参数,也不完成任何操作。为了避免失去控制,一般将构造函数的声明与创建为了避免失去控制,一般将构造函数的声明与创建分开处理。分开处理。2023-5-934例例1 JavaJava中对象的初始化中对象的初始化class Valuement boolean a;char b;byte c;short d;int e;long f;float g;double h;void print()ystem.out.println(boolean +a);System.out.println(char +b);System.out.println(byt

25、e +c);System.out.println(short +d);System.out.println(int +e);System.out.println(long +f);System.out.println(float +g);System.out.println(double +h);public class InitVal public static void main(String args)Valuement value=new Valuement();value.print();2023-5-935lboolean falselcharlbyte 0lshort 0lint

26、 0 llong 0lfloat 0.0ldouble 0.0 2023-5-936习题习题1、抽象小李、小王等同学,构造学生类,用类、抽象小李、小王等同学,构造学生类,用类图方法描述学生类,用对象图描述小李。图方法描述学生类,用对象图描述小李。2、写出描述学生类的、写出描述学生类的java语言片段。并以此类语言片段。并以此类声明声明“小李同学小李同学”、建立、建立“小李同学小李同学”。2023-5-9373.4 类的修饰和它的类的修饰和它的“推广空间推广空间”类的修饰符用来说明对它的访问限制类的修饰符用来说明对它的访问限制1、无修饰符、无修饰符 如果一个类前无修饰符,那么这个类只能被如果一个

27、类前无修饰符,那么这个类只能被同个包里的类使用。(同个程序文件中的类都可同个包里的类使用。(同个程序文件中的类都可以使用该类)。以使用该类)。2023-5-938public class c3_2 /公共类公共类c3_2 public static void main(String args)pp p1=new pp();/类类c3_2中创建了一个无修中创建了一个无修饰符类饰符类pp的对象的对象p1 System.out.println(p1.a);例例2 class pp /无修饰符的类无修饰符的类pp int a=45;/pp类的数据成员类的数据成员a 2023-5-9392、public

28、修饰符修饰符 表示该类是公共类,表示该类是公共类,可以被可以被本包本包其他类使用,其他类使用,可以被可以被其他包其他包中类使用,但在其他包中使用该中类使用,但在其他包中使用该类,必须类,必须用用import语句引入该类所在包。语句引入该类所在包。注意:在一个程序文件中,只能定义一个注意:在一个程序文件中,只能定义一个public类类 例如:上例中,例如:上例中,c3_2 就是一个公共类。就是一个公共类。2023-5-9403、final修饰符用来说明最终类修饰符用来说明最终类 说明该类为最终类的目的为:说明该类为最终类的目的为:如果一个类被声明为如果一个类被声明为final,通常是一些有特殊,

29、通常是一些有特殊作用的、用来完成标准功能的类。作用的、用来完成标准功能的类。将一个类定义为将一个类定义为final则可以将它的内容、属性则可以将它的内容、属性和功能固定下来,与它的类名形成稳定的映射关和功能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现的功能是准确系,从而保证引用这个类时所实现的功能是准确无误的。无误的。提高安全性。由于最终类不能派生子类,所以提高安全性。由于最终类不能派生子类,所以切断了非法访问利用派生子类访问关键信息的途切断了非法访问利用派生子类访问关键信息的途径。径。2023-5-941 例例3 import java.awt.*;import jav

30、a.applet.*;final class p1 /用用final修饰的类修饰的类p1 int i=7;int j=1;void f(Graphics g)g.drawString(OK,20,50);/public class c3_3 extends p1public class c3_3 extends Applet public void paint(Graphics g)p1 n=new p1();n.f(g);n.i=40;n.j+;g.drawString(i=+n.i,20,70);g.drawString(j=+n.j,20,90);用用final修饰的类修饰的类p1不能有

31、继承类不能有继承类OKi=40j=22023-5-9424、abstract修饰符用来说明抽象类修饰符用来说明抽象类 抽象类不能被实例化。抽象类不能被实例化。例如:例如:abstract class transport .如果在别的类中出现下面的语句就是非法的:如果在别的类中出现下面的语句就是非法的:transport trans1=new transport();解决方法:由该抽象类派生一子类,重载其中解决方法:由该抽象类派生一子类,重载其中的抽象方法,完善它。然后用该子类实例化。的抽象方法,完善它。然后用该子类实例化。方法重载:在一个类中有两个方法,它们具有方法重载:在一个类中有两个方法,

32、它们具有相同的名字,但有不同的参数列表。相同的名字,但有不同的参数列表。2023-5-9433.5 数据成员数据成员3.5.1 数据成员的声明数据成员的声明Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;注:修饰符分两种:注:修饰符分两种:访问权访问权限控制限控制publicprivateprotected非访问权非访问权限控制限控制staticfinal2023-5-9443.5.2 访问权限控制符访问权限控制符 私有访问控制符私有访问控制符private 用用privateprivate修饰的属性只

33、能被该类自身所访问修饰的属性只能被该类自身所访问和修改,而不能被任何其他类,包括该类的子类,和修改,而不能被任何其他类,包括该类的子类,来获取和引用。来获取和引用。例:有两个字段,它们含有在例:有两个字段,它们含有在EmployeeEmployee类的实类的实例例 内部被操作的数据。内部被操作的数据。private string private string namename;private double private double salarysalary;private(private(私有的)关键字用来确保可以访问这私有的)关键字用来确保可以访问这些实例字段的只能是些实例字段的只能是E

34、mployeeEmployee类本身的方法。类本身的方法。将属性说明为将属性说明为“私有的私有的”是数据安全的保证。是数据安全的保证。2023-5-945保护访问控制符保护访问控制符protected 用用protected修饰的成员变量可以被三种类所引用修饰的成员变量可以被三种类所引用 该类自身该类自身、与它在同一个包中的其他类、与它在同一个包中的其他类、在其他包中的该类的子类在其他包中的该类的子类。使用使用protected修饰符的主要作用:修饰符的主要作用:允许其他包中的它的子类来访问父类的特定属性。允许其他包中的它的子类来访问父类的特定属性。例:例:protected double p

35、rotected double salarysalary;2023-5-946私有保护访问控制符私有保护访问控制符 private protected private和和protected按顺序连用构成一个完整的按顺序连用构成一个完整的访问控制符:私有保护访问控制符。访问控制符:私有保护访问控制符。用用private protected修饰的成员变量可以被两种类修饰的成员变量可以被两种类访问和引用:访问和引用:一种是一种是该类本身该类本身,一种是一种是该类的所有子类,该类的所有子类,不论这些子类是与该不论这些子类是与该类在同一个包里,还是处于其他的包中。类在同一个包里,还是处于其他的包中。相对

36、于相对于protected,private protected修饰符把修饰符把同一包内的非子类排除在可访问的范围之外同一包内的非子类排除在可访问的范围之外,使得,使得成员变量更专有于具有明确继承关系的类,而不是成员变量更专有于具有明确继承关系的类,而不是松散地组合在一起的包。松散地组合在一起的包。2023-5-947公共访问控制符公共访问控制符public 字段应用字段应用public关键字,这是一种非常糟糕的做关键字,这是一种非常糟糕的做法法,破坏封装破坏封装,不推荐。不推荐。注:一个类作为整体对程序的其他部分可见,并不注:一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也

37、同时对程序的其能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件;他部分可见,前者只是后者的必要条件;类的属性和方法能否为所有其他类所访问,类的属性和方法能否为所有其他类所访问,还要看这些属性和方法自己的访问控制符。还要看这些属性和方法自己的访问控制符。2023-5-9483.5.3 静态修饰符静态修饰符 static称为静态修饰符,它可以修饰类中的属性。称为静态修饰符,它可以修饰类中的属性。使用场合:使用场合:只想用一个存储区域来保存一个特定的数据只想用一个存储区域来保存一个特定的数据无无论要创建多少个对象,甚至根本不创建对象;论要创建多少个对象,甚至根本不创建对象

38、;被被static修饰的属性称为静态属性修饰的属性称为静态属性;最本质的特点最本质的特点:它们是类的属性,而不属于任何一个类的具体对象它们是类的属性,而不属于任何一个类的具体对象 对于该类的任何一个具体对象而言,静态属性是一对于该类的任何一个具体对象而言,静态属性是一个个公共的存储单元公共的存储单元,任何一个类的对象访问它时,取到,任何一个类的对象访问它时,取到的都是相同的数值,同样任何一个类的对象去修改它时的都是相同的数值,同样任何一个类的对象去修改它时,也都是在对同一个内存单元做操作。,也都是在对同一个内存单元做操作。访问:访问:类名加点操作符访问。类名加点操作符访问。2023-5-949

39、import java.awt.*;import java.applet.*;例例 4class pc static double ad=8;public class c3_4 extends Applet public void paint(Graphics g)pc m=new pc();pc m1=new pc();m.ad=0.1;/只对只对m对象的数据成员对象的数据成员ad赋了值赋了值 g.drawString(m1.ad=+m1.ad,20,50);g.drawString(“pc.ad=+pc.ad,20,70);g.drawString(m.ad=+m.ad,20,90);m1

40、.ad=0.1pc.ad=0.1m.ad=0.12023-5-9503.5.4最终属性最终属性修饰修饰符符final 无论无论static还是还是final字段,都只能存储一个数据,字段,都只能存储一个数据,而且不得改变。而且不得改变。初始化:初始化:可以在声明时初始化;可以在声明时初始化;可以通过构造方法初始化;可以通过构造方法初始化;不能在程序的其他部分赋值。不能在程序的其他部分赋值。在对象被构造时,常量必须被初始化。在对象被构造时,常量必须被初始化。即,必须保证在每一个构造函数结束之前其值已即,必须保证在每一个构造函数结束之前其值已被设定。被设定。以后其值不能改变。以后其值不能改变。20

41、23-5-951import java.awt.*;例例 5import java.applet.*;class ca static int n=20;final int nn;/声明声明nn,但没有赋初值但没有赋初值 final int k=40;/声明声明k并赋初值并赋初值40 ca()nn=+n;/在构造方法中给在构造方法中给nn赋值赋值2023-5-952public class c3_5 extends Applet public void paint(Graphics g)ca m1=new ca();/创建对象创建对象m1,ca m2=new ca();/创建对象创建对象m2,m

42、1.nn=90;g.drawString(m1.nn=+m1.nn,20,30);g.drawString(m1.k=+m1.k,20,50);g.drawString(m2.nn=+m2.nn,20,70);g.drawString(m2.k=+m2.k,20,90);/错误的赋值语句,因错误的赋值语句,因nn是标识符常量是标识符常量m1.nn=21m1.nn=21m1.k=40m1.k=40m2.nn=22m2.nn=22m2.k=40m2.k=40import java.awt.*;例例 5import java.applet.*;class ca static int n=20;fin

43、al int nn;/声明声明nn,但没有赋初值但没有赋初值 final int k=40;/声明声明k并赋初值并赋初值40 ca()nn=+n;/在构造方法中给在构造方法中给nn赋值赋值2023-5-9533.6.1 方法概述方法概述3.6 方法方法 Java程序是由一个个类定义组成的;程序是由一个个类定义组成的;类有两个部分:属性和方法;类有两个部分:属性和方法;属性描述类是什么,属性描述类是什么,方法描述类做什么;方法描述类做什么;方法是类的主要组成部分。在一个类中,程序的作方法是类的主要组成部分。在一个类中,程序的作用用体现在方法体现在方法中;中;方法即是方法即是JAVA创建一个有名字

44、的子程序;创建一个有名字的子程序;一个主方法和若干个子方法构成;一个主方法和若干个子方法构成;主方法调用其他方法,其他方法间也可互相调用;主方法调用其他方法,其他方法间也可互相调用;同一个方法可被一个或多个方法调用任意次。同一个方法可被一个或多个方法调用任意次。2023-5-954Java程序的基本结构如下:程序的基本结构如下:引入引入Java类库;类库;定义用户类定义用户类1 定义类定义类1的若干变量或对象:的若干变量或对象:定义类定义类1的方法的方法1;定义类定义类1的方法的方法2;定义类定义类1的方法的方法M1;定义用户类定义用户类2 定义类定义类2的若干变量或对象:的若干变量或对象:定

45、义类定义类2的方法的方法1;定义类定义类2的方法的方法2;定义类定义类2的方法的方法M2 2023-5-955 Java语言的方法实现子任务处理时,有下面几个语言的方法实现子任务处理时,有下面几个原则与规律:原则与规律:(1)算法中需要细化的步骤、程序中重复的代码以)算法中需要细化的步骤、程序中重复的代码以及重载父类方法都可以定义成类的方法。及重载父类方法都可以定义成类的方法。(2)界面清晰。)界面清晰。(3)大小适中。)大小适中。(4)方法有两种:)方法有两种:一种:标准方法,一种:标准方法,Java API提供了丰富的类提供了丰富的类和方法,这些方法提供了程序员所需的许多功能。和方法,这些

46、方法提供了程序员所需的许多功能。另一种:用户自定义的方法,以解决用户专门另一种:用户自定义的方法,以解决用户专门需要。需要。(5)Java应用程序中,程序的执行从应用程序中,程序的执行从main类开始,类开始,调用其他方法后又回到调用其他方法后又回到main类,在类,在main类中结束整个类中结束整个程序的运行。程序的运行。2023-5-9563.6.2 定义方法定义方法1声明方法头声明方法头2声明方法体声明方法体Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参数列表参数列表)throws 例外名例外名1,例外名,例外名2,方法体:方法体

47、:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,类的方法,又称为成员又称为成员函数函数,用来用来规定类属性规定类属性上的操作上的操作2023-5-9571声明方法头声明方法头 方法头一般由方法名、参数列表、返回类型、方法头一般由方法名、参数列表、返回类型、方法修饰符和方法抛出的例外五部分组成。方法修饰符和方法抛出的例外五部分组成。(1)方法名可以是任何有效的标识符,命名规则与标)方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。识符命名规则相同。(2)类型说明符用来指定方法返回值的类型,方法最)类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。多只能返回一个值。

48、(3)参数列表是方法的输入接口,它列出了一系列形)参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,式参数的类型和名称,在方法参数表的右括号后加在方法参数表的右括号后加一个分号是语法错误。一个分号是语法错误。参数表以逗号为分隔符,其中包含了方法被调用参数表以逗号为分隔符,其中包含了方法被调用时传递给方法的参数说明。对于方法定义中的每一时传递给方法的参数说明。对于方法定义中的每一个参数,个参数,方法调用时必须有一个参量与之对应,而方法调用时必须有一个参量与之对应,而且该参量的类型必须与对应参数类型相一致且该参量的类型必须与对应参数类型相一致。2023-5-9582 声明方法体声明方法

49、体方法头定义了方法的性质,方法头定义了方法的性质,方法体定义了方法的具体内容。方法体定义了方法的具体内容。注:注:在一个方法中定义另一个方法将产生语法错误。在一个方法中定义另一个方法将产生语法错误。(1)最好避免局部变量)最好避免局部变量“屏蔽屏蔽”实例变量,在一个类中实例变量,在一个类中不使用同名标识符就可以做到这一点;不使用同名标识符就可以做到这一点;方法调用中参数用来传递数值、传递引用,同时方方法调用中参数用来传递数值、传递引用,同时方法还可以嵌套、递归调用。法还可以嵌套、递归调用。(2)方法体中如果指定了非)方法体中如果指定了非void的返回值类型,方法中的返回值类型,方法中就必须包含

50、一条就必须包含一条return语句保证任何情况下都有返回数语句保证任何情况下都有返回数值,值,return语句后面不能跟任何表达式;语句后面不能跟任何表达式;2023-5-959例如下面的语句为部门类例如下面的语句为部门类Department定义方法:定义方法:class Department int m_ DeptNo;部门编号部门编号 String m_DeptName;部门名称部门名称 int m_DeptTotalEmp;部门雇员数部门雇员数 ManagerEmployee m_DeptMgr;部门主管部门主管 int getDeptNo()获取当前对象的部门号获取当前对象的部门号 r

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 待归类文档
版权提示 | 免责声明

1,本文(第三章抽象封装和类.ppt)为本站会员(hyngb9260)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|