抽象封装和类.ppt

上传人:石*** 文档编号:39346608 上传时间:2022-09-07 格式:PPT 页数:74 大小:7.52MB
返回 下载 相关 举报
抽象封装和类.ppt_第1页
第1页 / 共74页
抽象封装和类.ppt_第2页
第2页 / 共74页
点击查看更多>>
资源描述

《抽象封装和类.ppt》由会员分享,可在线阅读,更多相关《抽象封装和类.ppt(74页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、抽象封装和类抽象封装和类2022-9-61现在学习的是第1页,共74页3.13.1面向过程到面向对象的转变面向过程到面向对象的转变3.2面向对象的基本概念面向对象的基本概念3.3 类类3.4 类的修饰和它的类的修饰和它的“推广空间推广空间”3.5 数据成员数据成员3.6 方法方法第三章第三章 抽象、封装和类抽象、封装和类2022-9-62现在学习的是第2页,共74页3.13.1面向过程到面向对象的转变面向过程到面向对象的转变使用面向过程使用面向过程描述一件事描述一件事青椒炒牛肉青椒炒牛肉 取出青椒取出青椒 500 g,用刀切成,用刀切成细细丝丝,过过油油 取出牛肉取出牛肉 300 g,切丁,用

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

3、 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡芡汁汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分半分半后后用用芡汁芡汁芶芡芶芡即可。即可。2022-9-63现在学习的是第3页,共74页何为面向对象何为面向对象先定义好参与这件事的物品有先定义好参与这件事的物品有哪些哪些(这些这些物品物品叫做叫做“对象对象”)再定再定义这义这些物品所需的些物品所需的数数量量及及行行为为(这些数这些数量量及及行行为为叫做叫做“属属性性”与与“方法方法”)接下來可用物品接下來可用物品间间的互的互动行动行为为來描述整件事情是如何來描述整件事情是如何发发生的。生的。(这

4、这部部分分的描述的描述称为称为“主程序主程序”)青椒炒牛肉青椒炒牛肉 青椒青椒 数数量量:500 g 处处理理:用刀切成:用刀切成细丝细丝,过过油油 牛肉牛肉 数数量量:300 g 处处理理:切丁,用醬油、酒、:切丁,用醬油、酒、淹制淹制 芡汁芡汁 制制作作:太白粉:太白粉调调上上适适量的水量的水 芶芡芶芡:將芡汁倒入:將芡汁倒入锅锅中中 青椒青椒处处理理好、好、牛肉牛肉处处理理好、好、芡芡汁汁制制作作好,放入好,放入锅锅中快炒中快炒 1 分分半半后后用用芡汁芡汁芶芡芶芡即可。即可。2022-9-64现在学习的是第4页,共74页3.2面向对象的基本概念面向对象的基本概念3.2.1 抽象抽象什么

5、是抽象什么是抽象 抽象就是抽出事物的本质特性而暂时不考虑它们的细节。抽象就是抽出事物的本质特性而暂时不考虑它们的细节。过程抽象和数据抽象过程抽象和数据抽象是常用的两种主要抽象手段。是常用的两种主要抽象手段。2022-9-65现在学习的是第5页,共74页3.2.2 封装封装将信息隐蔽的过程称为封装将信息隐蔽的过程称为封装。2022-9-66现在学习的是第6页,共74页有两方面的原因促使我们控制对成员的访问。有两方面的原因促使我们控制对成员的访问。原因一:原因一:防止程序员接触他们不该接触的东西防止程序员接触他们不该接触的东西通常是内部通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只

6、需操数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。作接口即可,毋需明白这些信息。原因二:原因二:允许库设计人员修改内部结构,不用担心它会对客户允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响程序员造成什么影响。2022-9-67现在学习的是第7页,共74页3.2.3 对象对象 对象(对象(objectobject)应是实际问题域中有意义的个体应是实际问题域中有意义的个体或概念实体。或概念实体。对象应该以某种方式与系统发生关联,即对象应该与对象应该以某种方式与系统发生关联,即对象应该与系统中其他有意义的对象进行系统中其他有意义的对象进行消息

7、传递消息传递,并提供外部服,并提供外部服务。务。2022-9-68现在学习的是第8页,共74页l如何理解对象?如何理解对象?(1)(1)所有东西都是对象。可将对象想象成一种新型变量;所有东西都是对象。可将对象想象成一种新型变量;它保存着数据,但可要求它对自身进行操作。它保存着数据,但可要求它对自身进行操作。(2)(2)程序是一大堆对象的组合;通过消息传递,各对象知道自程序是一大堆对象的组合;通过消息传递,各对象知道自己该做些什么。己该做些什么。(3)(3)每个对象都有自己的存储空间,可容纳其他对象。每个对象都有自己的存储空间,可容纳其他对象。(4)(4)每个对象都有一种类型。根据语法,每个对象

8、都是某每个对象都有一种类型。根据语法,每个对象都是某个个“类类”的一个的一个“实例实例”。(5(5)同一类所有对象都能接收相同的消息。)同一类所有对象都能接收相同的消息。2022-9-69现在学习的是第9页,共74页对象的三个要素:对象的三个要素:1、对象的标识:对象的名字。、对象的标识:对象的名字。2、属性:对象的静态特征、属性:对象的静态特征3、方法:服务和操作。、方法:服务和操作。汽车汽车行驶,转弯,刹车行驶,转弯,刹车静态属性静态属性动动态态属属性性颜色,马力等颜色,马力等2022-9-610现在学习的是第10页,共74页l对象的图形化描述:对象的图形化描述:对象:小李的手表对象:小李

9、的手表静态特征:小李静态特征:小李 指针表指针表 单价单价180元元 银色表带银色表带动态特征:显示当前时间动态特征:显示当前时间 修改当前时间修改当前时间2022-9-611现在学习的是第11页,共74页实验二实验二-Java语言基础语言基础 掷骰子掷骰子6000次,次,分别统计每一面出现的次数。分别统计每一面出现的次数。(int)(Math.random()*(100+1)2022-9-612现在学习的是第12页,共74页limport java.util.Scanner;limport java.math.*;lpublic class AA lpublic static void ma

10、in(String args)lint count=0,0,0,0,0,0;lfor(int i=0;i 6000;i+)lint result=(int)(Math.random()*6);lcountresult+;ll/print the resultlfor(int i=0;i count.length;i+)lSystem.out.println(i+出现 +counti+次!);lll2022-9-613现在学习的是第13页,共74页3.3 类类 3.3.1类的相关概念类的相关概念何何谓谓“类类(Class)”类类是现实世界某些对象的共同特征是现实世界某些对象的共同特征(属性和操作

11、属性和操作)的表示,的表示,对象对象是类的实例。是类的实例。將所需將所需属性属性和和操作操作打包在一起,打包在一起,并给并给它一它一个个名字名字以方便操作以方便操作。类的属性类的属性:就是类的静态属性的简称,指类内包含的各项就是类的静态属性的简称,指类内包含的各项数据,如变量或其他类的对象;数据,如变量或其他类的对象;类的服务类的服务:则被称为成员函数或方法。则被称为成员函数或方法。2022-9-614现在学习的是第14页,共74页客戶客戶String User=“Robert”;String Pass=“1234”;Login(User,Pass)class Customer String

12、User=“Robert”;String Pass=“1234”;Login(User,Pass);属属性性方法方法2022-9-615现在学习的是第15页,共74页类与对象的关系类与对象的关系类类(Class):对象的设计蓝图对象的设计蓝图对象对象(Object):根:根据类据类建造出來的建造出來的实体实体2022-9-616现在学习的是第16页,共74页class Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);Robert=new CustomerPeter=new CustomerLi

13、sa=new Customer对象对象类类2022-9-617现在学习的是第17页,共74页何谓面向对象程序设计何谓面向对象程序设计把真把真实实世界的物品,以世界的物品,以 class 表現出來表現出來“客戶客戶”class Customer String User=“Robert”;String Pass=“1234”;function Login(User,Pass);RobertPeterLisaRobert=new CustomerPeter=new CustomerLisa=new Customer2022-9-618现在学习的是第18页,共74页类的基本定义方法:类的基本定义方法:

14、修饰符修饰符class类名类名 extends 父类父类implements 接口名接口名 类成员变量声明类成员变量声明 类方法声明类方法声明2022-9-619现在学习的是第19页,共74页1关于类头关于类头-class、extends class关键字,在它的后面,应跟随关键字,在它的后面,应跟随新数据类型的名称。新数据类型的名称。(注意不要把(注意不要把class写成写成Class)。父类名跟在父类名跟在extends 关键字后面,关键字后面,用来说明当前类是哪个已经存在类的子用来说明当前类是哪个已经存在类的子类,存在继承关系。类,存在继承关系。2022-9-620现在学习的是第20页,

15、共74页1关于类头关于类头-类的修饰符类的修饰符“public”(公共(公共)意味着后续的定义任何人均可使用。意味着后续的定义任何人均可使用。“private”(私有(私有)意味着除您自己、类型的创建者以及意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。的定义信息。“protected”(受保护的(受保护的)与与“private”相似,只是一个继承相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。的类可访问受保护的成员,但不能访问私有成员。“friendly”(友好的)(友好的)若某样东西是

16、若某样东西是“友好的友好的”,意味着它,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问包装访问”)2022-9-621现在学习的是第21页,共74页1关于类头关于类头-接口名接口名接口是一种与类相似的结构,只接口是一种与类相似的结构,只包含常量和抽象方法,目的是指包含常量和抽象方法,目的是指明多个对象的共同行为。接口名明多个对象的共同行为。接口名跟在跟在implements关键字后面,用关键字后面,用来说明当前类中实现了哪个接口来说明当前类中实现了哪个接口定义的功能和方法。定义的功能和方法。2022-9-622现在

17、学习的是第22页,共74页2关于类体关于类体 类体的定义要包括类的具体内容,包括类类体的定义要包括类的具体内容,包括类的属性与方法。的属性与方法。class 2022-9-623现在学习的是第23页,共74页Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;变量类型和变量名是声明一个变量类型和变量名是声明一个变量必不可少的部分。变量必不可少的部分。2关于类体关于类体-类的属性类的属性2022-9-624现在学习的是第24页,共74页2关于类体关于类体-类的方法类的方法Java中声明方法的语法如下:中声明方

18、法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参参数列表数列表)方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类中定义的方法通常起到两种作用:类中定义的方法通常起到两种作用:一是围绕着类的属性进行各种操作;一是围绕着类的属性进行各种操作;二是与其他的类或对象进行数据交流、消息传递等操作。二是与其他的类或对象进行数据交流、消息传递等操作。2022-9-625现在学习的是第25页,共74页 属性:属性:name Salary hireDay类:类:Employee服务:服务:getName3、类图的描述、类图的描述2022-9-626现在学习的是第26页,共74

19、页3.3.2 用户程序自定义类用户程序自定义类 Java程序员把注意力放在创建称为类的用户自定义类型(程序员把注意力放在创建称为类的用户自定义类型(user-defined type)上,类也称为程序员定义的类型()上,类也称为程序员定义的类型(programmer-defined type);每个类都含有数据和一组操作数据的方法:每个类都含有数据和一组操作数据的方法:类中的数据部分称为实例变量。类中的数据部分称为实例变量。用户定义类型(即类)的实例称为对象。用户定义类型(即类)的实例称为对象。2022-9-627现在学习的是第27页,共74页class Employee /构造函数构造函数

20、public Employee(String n,double s)name=n;/职工姓名职工姓名 salary=s;/职工工资职工工资 /方法方法1 public String getName()return name;/更多的方法更多的方法/属性的实例属性的实例 private String name;private double salary;2022-9-628现在学习的是第28页,共74页3.3.3 创建类及类的实例对象创建类及类的实例对象 对象是类的一个实例,类是同种对象的抽象,是创建对象是类的一个实例,类是同种对象的抽象,是创建对象的模板。对象的模板。在程序中创建一个对象,将在

21、内存中开辟一块空间,其在程序中创建一个对象,将在内存中开辟一块空间,其中包括该对象的属性和方法。中包括该对象的属性和方法。2022-9-629现在学习的是第29页,共74页1 1、声明对象、声明对象 格式:类名格式:类名 对象列表;对象列表;例:例:Employee newEmp1,newEmp2;2、建立对象、建立对象 格式:格式:对象名对象名=new 构造方法();构造方法();例:例:newEmp1=new Employee(张三张三,75);newEmp2 =new Employee(“李四李四,75);或合为一步:或合为一步:Employee newEmp2 =new Employe

22、e(“李四李四,75);注意:注意:创建对象以某个类为模板,这个类里定义了哪些属性创建对象以某个类为模板,这个类里定义了哪些属性和方法,新建的对象就必然在内存里拥有相应的属性和方和方法,新建的对象就必然在内存里拥有相应的属性和方法。法。相对于简单数据类型,类就是用户自己定义的复杂的相对于简单数据类型,类就是用户自己定义的复杂的抽象数据类型抽象数据类型;相对于简单变量,对象就是复杂的既包括数据又包相对于简单变量,对象就是复杂的既包括数据又包括方法代码的复杂数据单位。括方法代码的复杂数据单位。2022-9-630现在学习的是第30页,共74页3、初始化对象、初始化对象构造函数构造函数 要使用对象,

23、首先必须构造它们,并指定它们的初始要使用对象,首先必须构造它们,并指定它们的初始状态,然后将方法应用于对象。状态,然后将方法应用于对象。在在Java程序设计语言中,使用构造函数(程序设计语言中,使用构造函数(constructor)来构造新的实例。)来构造新的实例。一个构造函数是一个新的方法,一个构造函数是一个新的方法,它的作用是构造并它的作用是构造并初始化对象初始化对象。2022-9-631现在学习的是第31页,共74页构造函数是类的一种特殊方法,它的特殊性主要体现在如构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面:下的几个方面:(1)构造函数的方法名与类名相同。)构造函数的

24、方法名与类名相同。(2)构造函数没有返回类型。)构造函数没有返回类型。构造函数可以有构造函数可以有0个、个、1个个或多个参数。或多个参数。(3)构造函数的主要作用是完成对类对象的初始化工作)构造函数的主要作用是完成对类对象的初始化工作。(4)构造函数不能由编程人员显式地直接调用,)构造函数不能由编程人员显式地直接调用,构造函数构造函数总是和总是和new运算符一起被调用。运算符一起被调用。(5)在创建一个类的新对象的同时,系统会自动调用该类的)在创建一个类的新对象的同时,系统会自动调用该类的构造函数为新对象初始化。构造函数为新对象初始化。2022-9-632现在学习的是第32页,共74页 Jav

25、a中可以不定义构造函数,此时系统会自动为该系统生中可以不定义构造函数,此时系统会自动为该系统生成一个默认的构造函数。成一个默认的构造函数。这个构造函数的名字与类名相同,它没有任何形式这个构造函数的名字与类名相同,它没有任何形式参数,也不完成任何操作。参数,也不完成任何操作。为了避免失去控制,一般将构造函数的声明与创建分为了避免失去控制,一般将构造函数的声明与创建分开处理。开处理。2022-9-633现在学习的是第33页,共74页例例1 JavaJava中对象的初始化中对象的初始化class Valuement boolean a;char b;byte c;short d;int e;long

26、 f;float g;double h;void print()ystem.out.println(boolean +a);System.out.println(char +b);System.out.println(byte +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

27、 main(String args)Valuement value=new Valuement();value.print();2022-9-634现在学习的是第34页,共74页lboolean falselcharlbyte 0lshort 0lint 0 llong 0lfloat 0.0ldouble 0.0 2022-9-635现在学习的是第35页,共74页习题习题1、抽象小李、小王等同学,构造学生类,用类、抽象小李、小王等同学,构造学生类,用类图方法描述学生类,用对象图描述小李。图方法描述学生类,用对象图描述小李。2、写出描述学生类的、写出描述学生类的java语言片段。并以此类语言片

28、段。并以此类声明声明“小李同学小李同学”、建立、建立“小李同学小李同学”。2022-9-636现在学习的是第36页,共74页3.4 类的修饰和它的类的修饰和它的“推广空间推广空间”类的修饰符用来说明对它的访问限制类的修饰符用来说明对它的访问限制1、无修饰符、无修饰符 如果一个类前无修饰符,那么这个类只能被同如果一个类前无修饰符,那么这个类只能被同个包里的类使用。(同个程序文件中的类都可以使个包里的类使用。(同个程序文件中的类都可以使用该类)。用该类)。2022-9-637现在学习的是第37页,共74页public class c3_2 /公共类公共类c3_2 public static voi

29、d 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 2022-9-638现在学习的是第38页,共74页2、public修饰符修饰符 表示该类是公共类,表示该类是公共类,可以被可以被本包本包其他类使用,其他类使用,可以被可以被其他包其他包中类使用,但在其他包中使用该类,必中类使用,但在其他包中使用该类,必须用须用import语句引入该类所在包。

30、语句引入该类所在包。注意:在一个程序文件中,只能定义一个注意:在一个程序文件中,只能定义一个public类类 例如:上例中,例如:上例中,c3_2 就是一个公共类。就是一个公共类。2022-9-639现在学习的是第39页,共74页3、final修饰符用来说明最终类修饰符用来说明最终类 说明该类为最终类的目的为:说明该类为最终类的目的为:如果一个类被声明为如果一个类被声明为final,通常是一些有特殊作用,通常是一些有特殊作用的、用来完成标准功能的类。的、用来完成标准功能的类。将一个类定义为将一个类定义为final则可以将它的内容、属性和功则可以将它的内容、属性和功能固定下来,与它的类名形成稳定

31、的映射关系,从能固定下来,与它的类名形成稳定的映射关系,从而保证引用这个类时所实现的功能是准确无误的。而保证引用这个类时所实现的功能是准确无误的。提高安全性。由于最终类不能派生子类,所以切断了非提高安全性。由于最终类不能派生子类,所以切断了非法访问利用派生子类访问关键信息的途径。法访问利用派生子类访问关键信息的途径。2022-9-640现在学习的是第40页,共74页 例例3 import java.awt.*;import java.applet.*;final class p1 /用用final修饰的类修饰的类p1 int i=7;int j=1;void f(Graphics g)g.dr

32、awString(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不能有继承类不能有继承类OKi=40j=22022-9-641现在学习的是第41页,共74页4、abstract修饰符用来说明抽象类修饰符用来说明抽象类 抽象类不能被实例化

33、。抽象类不能被实例化。例如:例如:abstract class transport .如果在别的类中出现下面的语句就是非法的:如果在别的类中出现下面的语句就是非法的:transport trans1=new transport();解决方法:由该抽象类派生一子类,重载其中的抽象解决方法:由该抽象类派生一子类,重载其中的抽象方法,完善它。然后用该子类实例化。方法,完善它。然后用该子类实例化。方法重载:在一个类中有两个方法,它们具有相同的方法重载:在一个类中有两个方法,它们具有相同的名字,但有不同的参数列表。名字,但有不同的参数列表。2022-9-642现在学习的是第42页,共74页3.5 数据成

34、员数据成员3.5.1 数据成员的声明数据成员的声明Java中声明类属性为简单变量的语法如下:中声明类属性为简单变量的语法如下:修饰符修饰符 变量类型变量类型 变量名变量名=变量初值变量初值;注:修饰符分两种:注:修饰符分两种:访问权访问权限控制限控制publicprivateprotected非访问权非访问权限控制限控制staticfinal2022-9-643现在学习的是第43页,共74页3.5.2 访问权限控制符访问权限控制符 私有访问控制符私有访问控制符private 用用privateprivate修饰的属性只能被该类自身所访问和修改,而修饰的属性只能被该类自身所访问和修改,而不能被任

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

36、说明为“私有的私有的”是数据安全的保证。是数据安全的保证。2022-9-644现在学习的是第44页,共74页保护访问控制符保护访问控制符protected 用用protected修饰的成员变量可以被三种类所引用修饰的成员变量可以被三种类所引用 该类自身该类自身、与它在同一个包中的其他类、与它在同一个包中的其他类、在其他包中的该类的子类在其他包中的该类的子类。使用使用protected修饰符的主要作用:修饰符的主要作用:允许其他包中的它的子类来访问父类的特定属性。允许其他包中的它的子类来访问父类的特定属性。例:例:protected double protected double salarys

37、alary;2022-9-645现在学习的是第45页,共74页私有保护访问控制符私有保护访问控制符 private protected private和和protected按顺序连用构成一个完整的按顺序连用构成一个完整的访问控制符:私有保护访问控制符。访问控制符:私有保护访问控制符。用用private protected修饰的成员变量可以被两种类修饰的成员变量可以被两种类访问和引用:访问和引用:一种是一种是该类本身该类本身,一种是一种是该类的所有子类,该类的所有子类,不论这些子类是与该类在同不论这些子类是与该类在同一个包里,还是处于其他的包中。一个包里,还是处于其他的包中。相对于相对于prot

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

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

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

41、问。类名加点操作符访问。2022-9-648现在学习的是第48页,共74页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,

42、70);g.drawString(m.ad=+m.ad,20,90);m1.ad=0.1pc.ad=0.1m.ad=0.12022-9-649现在学习的是第49页,共74页3.5.4最终属性最终属性修饰符修饰符final 无论无论static还是还是final字段,都只能存储一个数据,而且字段,都只能存储一个数据,而且不得改变。不得改变。初始化:初始化:可以在声明时初始化;可以在声明时初始化;可以通过构造方法初始化;可以通过构造方法初始化;不能在程序的其他部分赋值。不能在程序的其他部分赋值。在对象被构造时,常量必须被初始化。在对象被构造时,常量必须被初始化。即,必须保证在每一个构造函数结束之前

43、其值已被设定。即,必须保证在每一个构造函数结束之前其值已被设定。以后其值不能改变。以后其值不能改变。2022-9-650现在学习的是第50页,共74页import 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赋值赋值2022-9-651现在学习的是第51页,共74页public class c3_5 extends Applet pu

44、blic void paint(Graphics g)ca m1=new ca();/创建对象创建对象m1,ca m2=new ca();/创建对象创建对象m2,m1.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.

45、k=40m2.k=40import 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赋值赋值2022-9-652现在学习的是第52页,共74页3.6.1 方法概述方法概述3.6 方法方法 Java程序是由一个个类定义组成的;程序是由一个个类定义组成的;类有两个部分:属性和方法;类有两个部分:属性和方法;属性描述类是什么,属性描述类是什么,

46、方法描述类做什么;方法描述类做什么;方法是类的主要组成部分。在一个类中,程序的作用方法是类的主要组成部分。在一个类中,程序的作用体现体现在方法在方法中;中;方法即是方法即是JAVA创建一个有名字的子程序;创建一个有名字的子程序;一个主方法和若干个子方法构成;一个主方法和若干个子方法构成;主方法调用其他方法,其他方法间也可互相调用;主方法调用其他方法,其他方法间也可互相调用;同一个方法可被一个或多个方法调用任意次。同一个方法可被一个或多个方法调用任意次。2022-9-653现在学习的是第53页,共74页Java程序的基本结构如下:程序的基本结构如下:引入引入Java类库;类库;定义用户类定义用户

47、类1 定义类定义类1的若干变量或对象:的若干变量或对象:定义类定义类1的方法的方法1;定义类定义类1的方法的方法2;定义类定义类1的方法的方法M1;定义用户类定义用户类2 定义类定义类2的若干变量或对象:的若干变量或对象:定义类定义类2的方法的方法1;定义类定义类2的方法的方法2;定义类定义类2的方法的方法M2 2022-9-654现在学习的是第54页,共74页 Java语言的方法实现子任务处理时,有下面几个原则与语言的方法实现子任务处理时,有下面几个原则与规律:规律:(1)算法中需要细化的步骤、程序中重复的代码以及重载)算法中需要细化的步骤、程序中重复的代码以及重载父类方法都可以定义成类的方

48、法。父类方法都可以定义成类的方法。(2)界面清晰。)界面清晰。(3)大小适中。)大小适中。(4)方法有两种:)方法有两种:一种:标准方法,一种:标准方法,Java API提供了丰富的类和方法,提供了丰富的类和方法,这些方法提供了程序员所需的许多功能。这些方法提供了程序员所需的许多功能。另一种:用户自定义的方法,以解决用户专门需另一种:用户自定义的方法,以解决用户专门需要。要。(5)Java应用程序中,程序的执行从应用程序中,程序的执行从main类开始,调用类开始,调用其他方法后又回到其他方法后又回到main类,在类,在main类中结束整个程序的运类中结束整个程序的运行。行。2022-9-655

49、现在学习的是第55页,共74页3.6.2 定义方法定义方法1声明方法头声明方法头2声明方法体声明方法体Java中声明方法的语法如下:中声明方法的语法如下:修饰符修饰符 返回值类型返回值类型 方法名方法名(参数参数列表列表)throws 例外名例外名1,例外名,例外名2,方法体:方法体:局部变量声明;局部变量声明;语句序列;语句序列;类的方法,又类的方法,又称为成员函数称为成员函数,用来规定类用来规定类属性上的操作属性上的操作2022-9-656现在学习的是第56页,共74页1声明方法头声明方法头 方法头一般由方法名、参数列表、返回类型、方法修饰方法头一般由方法名、参数列表、返回类型、方法修饰符

50、和方法抛出的例外五部分组成。符和方法抛出的例外五部分组成。(1)方法名可以是任何有效的标识符,命名规则与标识符命名规)方法名可以是任何有效的标识符,命名规则与标识符命名规则相同。则相同。(2)类型说明符用来指定方法返回值的类型,方法最多只能返回)类型说明符用来指定方法返回值的类型,方法最多只能返回一个值。一个值。(3)参数列表是方法的输入接口,它列出了一系列形式参)参数列表是方法的输入接口,它列出了一系列形式参数的类型和名称,数的类型和名称,在方法参数表的右括号后加一个分在方法参数表的右括号后加一个分号是语法错误。号是语法错误。参数表以逗号为分隔符,其中包含了方法被调用时传递参数表以逗号为分隔

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com