




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息工程学院本科课程信息工程学院本科课程整理课件第4章 类与对象主讲:赵建邦办公室:信息学院202E-mail:信息工程学院本科课程信息工程学院本科课程整理课件2本章主要内容n类类n对象n参数传值n对象组合nstatic关键字nthis关键字n包nimport关键字n类包装 jar文件n难点:n参数传值,对象组合n包和import语句信息工程学院本科课程信息工程学院本科课程整理课件34.1 编程语言的发展n面向机器语言n包括机器语言、汇编语言n代码量庞大,对不同机器编写不同指令n优点:可执行文件小,执行速度快n面向过程语言n按照流程化的思想来组织,不符合人的思维习惯,重用率低,维护困难,用函数
2、调用实现代码重用,信息完全暴露,很难实现大型程序信息工程学院本科课程信息工程学院本科课程整理课件44.1 编程语言的发展n面向对象语言n按照类和对象的思想来组织:将数据以及数据的操作封装在一个单独的数据结构中n抽象:强调实体本质、内在的属性n封装性:封装性是保证软件部件具有优良的模块性的基础,将说明与实现分开n继承性:不同级别上促进了共享n多态性:同一操作作用于不同的类的实例,将产生不同的执行结果信息工程学院本科课程信息工程学院本科课程整理课件54.1 编程语言的发展 (作者) (图灵奖)n1957 Fortran John Bacus 1997n1967 Simula D.J Dahl 20
3、01 K. Nygaard n1968 Pascal Niklaus wirth 1984n1972 C Ken Thompson 1983 D.M Ritchie n19801995 C+ Bjarne Stroustrupn1971 Smalltalk Alan Kay 2003n1995 Java James Gosling信息工程学院本科课程信息工程学院本科课程整理课件64.2 类n“万物皆为对象”Alan Kayn现实世界中的任一客观实体:n有一个名字(ID)用来标识n有一组属性来描述其特征n有一组方法来实现其功能n类是对具有相似属性对象的抽象n类是实例化对象的模板n对象是类的实例信
4、息工程学院本科课程信息工程学院本科课程整理课件74.2.1 类的声明n类的实现包括:类声明和类体n类实现的格式:class 类名 类体的内容n注意类名的命名约定:n拉丁字母的首字母使用大写: Hello、Timen复合词中的每个单词首字母大写:HelloWorld和之间的内容称作类体信息工程学院本科课程信息工程学院本科课程整理课件84.2.2 类体n类体包括两部分:n变量的声明,用来刻画属性n方法的定义,用来刻画功能信息工程学院本科课程信息工程学院本科课程整理课件94.2.3 成员变量和局部变量n不同变量的定义:n成员变量:变量声明部分所声明的变量n局部变量:方法体中声明的变量和方法 体的参数
5、n变量的类型:n基本类型(整数、浮点、字符、逻辑)n引用类型(数组、对象、接口)信息工程学院本科课程信息工程学院本科课程整理课件104.2.3 成员变量和局部变量n变量的有效范围n成员变量在整个类内部有效,并且有效性与它在类体中书写的先后位置无关n方法的参数在整个方法内部有效n方法内的局部变量从声明它的位置之后开始有效,并且仅限于声明它的复合语句或者循环体n例P57中,class A 、class 梯形注意:for循环中变量的有效性与C语言不同信息工程学院本科课程信息工程学院本科课程整理课件114.2.3 成员变量和局部变量n成员变量再细分:n实例变量、类变量n类变量:成员变量声明时,用sta
6、tic关键 字给予修饰,也称静态变量信息工程学院本科课程信息工程学院本科课程整理课件124.2.3 成员变量和局部变量n成员变量的隐藏n如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。P58 class 三角形信息工程学院本科课程信息工程学院本科课程整理课件134.2.4 方法n类似于类的实现结构,方法的实现也包括两部分:方法声明和方法体方法声明部分 方法体的内容n方法起名习惯和类名不同,首个字母约定使用小写信息工程学院本科课程信息工程学院本科课程整理课件144.2.4 方法n方法的声明格式:n返回值类型 方法名(参数1,参数2,)n当一个方法不需
7、要返回值时,返回类型为voidn方法体信息工程学院本科课程信息工程学院本科课程整理课件154.2.5 方法重载n一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同:n参数的个数不同n参数的类型不同n注意:方法的返回类型不参与比较: 如果两个方法名字相同,即使类型 不同,也必须保证参数不同信息工程学院本科课程信息工程学院本科课程整理课件164.2.6 构造方法n构造方法是一种特殊方法,名字必须与类名相同,没有返回值类型n构造方法可以重载信息工程学院本科课程信息工程学院本科课程整理课件174.2.7 类方法和实例方法n方法声明时,方法类型前面不加关键字static修饰的是实例方法、加s
8、tatic修饰的是类方法(静态方法)信息工程学院本科课程信息工程学院本科课程整理课件184.2.8 几个值得注意的问题n对成员变量的操作只能放在方法中,方法可以对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变量进行对成员变量和该方法体中声明的局部变量进行操作操作n需要注意的是:实例方法既能对类变量操作也需要注意的是:实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进能对实例变量操作,而类方法只能对类变量进行操作行操作n一个类中的方法可以互相调用,实例方法可以一个类中的方法可以互相调用,实例方法可以调用该类中的其它方法;类中的类方法只能调调用该类中的其它
9、方法;类中的类方法只能调用该类的类方法,不能调用实例方法用该类的类方法,不能调用实例方法 参照本节的例子理解以上内容参照本节的例子理解以上内容信息工程学院本科课程信息工程学院本科课程整理课件194.3 对象n类是创建对象的模板,对象是类创建的实例n如何创建对象?n创建对象分为声明对象和为对象分配内存两部分n声明格式: “类名 对象名;”n例如:People zhangPing;n使用new关键字分配内存:nzhangPing = new People();nPeople zhangPing = new People(); /实际包括了声明和分配内存两部分信息工程学院本科课程信息工程学院本科课程
10、整理课件204.3.1 创建对象n对象的内存模型n声明后的对象变量是一个空对象,不能使用n分配内存后,即使用new语句以后,对象的成员变量被分配内存空间,并对成员变量进行初始化;并且,将返回一个引用给对象变量n创建多个不同对象的时候,这些对象具有不同的引用和内存空间信息工程学院本科课程信息工程学院本科课程整理课件214.3.2 使用对象n通过运算符“.”来实现对类中变量的访问和方法的调用n体现封装n类体内如何操作成员变量,在类体内是看不到的,类体外看到的只是方法的接口n但是,方法所用到的局部变量,包括参数和方法体内的变量,在使用之前需要赋值n例:4.3信息工程学院本科课程信息工程学院本科课程整
11、理课件224.3.3 对象的引用和实体n声明一个对象之后,在栈中为其分配引用;Java的对象在堆(heap)中分配内存,这些内存空间称为对象的实体n通过引用,可以调用对象的属性和方法n一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体n没有实体的对象称作空对象,编译器对空对象不作检查,但是它不能被使用信息工程学院本科课程信息工程学院本科课程整理课件234.4 参数传值nJava中,方法的所有参数都是“传值”,即方法中参数变量的值是调用者指定值的一个拷贝 DataType a;/a已经被赋值 void function(DataType c) n基本类型参数的传值n引用类型参数的
12、传值信息工程学院本科课程信息工程学院本科课程整理课件244.4.1 基本类型参数的传值n原则:基本数据类型的参数,向该参数传递的值的级原则:基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别别不可以高于该参数的级别 n只要值在Main函数中没变, a的值不管怎么传都不回变,这是因为a是传值,而这个值是a的一个拷贝,a的值在传递后的改变只是改变了a的拷贝的内容,并没有改变真正的a的值int a=3的拷贝!返回信息工程学院本科课程信息工程学院本科课程整理课件254.4.2 引用类型参数的传值n当参数是引用类型时,当参数是引用类型时,“传值传值”传递的传递的是变量中存放的是变量中存放的
13、“引用引用”,而不是变量,而不是变量所引用的实体所引用的实体n例4.5信息工程学院本科课程信息工程学院本科课程整理课件264.4.3 可变参数n在声明方法时不给出参数列表中某项直至最后一项参数的名字和个数,但这些参数的类型必须一致。使用“”表示若干个参数,它们的类型必须相同npublic void f(int x )npublic void f(double d, int x);n用法类似于数组与for的新增功能,回忆章节3.7信息工程学院本科课程信息工程学院本科课程整理课件274.4.4 有理数的类封装n面向对象的编程,核心思想之一是将数据和对数据的操作封装在一起,从而形成包装类,通过类创建
14、具体的对象,对象调用方法,实现更简洁的计算效果n本节对有理数(Rational)进行封装,是面向对象程序设计的一个简单应用信息工程学院本科课程信息工程学院本科课程整理课件284.5 对象的组合n一个类的成员变量可以是Java允许的任何数据类型,即一个类的成员变量可以是其它类的对象,甚至可以是该类的自身对象n一个类的成员变量可以由若干个类组成,或者说该类的对象可以使若干对象的组合n例 4.7信息工程学院本科课程信息工程学院本科课程整理课件29举例:对象的组合信息工程学院本科课程信息工程学院本科课程整理课件304.6 static关键字n成员变量分为:类变量和实例变量n用static修饰的变量为类
15、变量n不用static修饰的变量为实例变量n方法分为:类方法和实例方法n用static修饰的方法为类方法n不用static修饰的方法为实例方法n调用原则:n实例方法可以调用所有方法n类方法只能调用类方法信息工程学院本科课程信息工程学院本科课程整理课件314.6.1 实例变量和类变量n区别1:n一个类可以创建多个不同的对象,每个对象的实例变量将被分配不同的内存空间;如果一个类中定义了类变量,那么,所有的类变量仅分配相同的类变量,一个对象改变了类变量,则彻底改变n也就是说,对象共享类变量n区别2:n类变量在没有创建对象的情况下已经加载到内存,直到程序退出才释放所占用的内存n类变量不仅可以通过对象访
16、问,也可以通过类名访问信息工程学院本科课程信息工程学院本科课程整理课件324.6.2 实例方法和类方法n区别1:n对象创建后才分配实例方法入口n对象创建前已经分配类方法入口n区别2:n所有对象都不存在时,实例方法的入口地址撤销n程序退出时,类方法的入口地址才被取消nstatic方法仅能调用其它的static方法、仅能访问static数据,不能以任何形式引用this、super信息工程学院本科课程信息工程学院本科课程整理课件33难点1:成员变量被隐藏nP58,对于类体中的方 法,如果局部变量名字 和成员变量名字相同, 则成员变量被隐藏n想仍然在这种情况下 使用成员变量,需要thisnP58中的两
17、个例子, 以及习题4.8信息工程学院本科课程信息工程学院本科课程整理课件34难点2:成员变量初始化n声明类的成员变量 时可以同时赋予初值nP62,class A,注意不 能用单独的赋值语句n通过构造方法初始化n生成对象时已完成n构造方法可以重载n通过其它方法初始化n必须通过对象调用方法信息工程学院本科课程信息工程学院本科课程整理课件35难点3:参数传值n发生在main()方法或者其它方法调用有参数的方法的时候n基本类型“传值”:方法中参数变量的值是调用者指定值的一个拷贝,方法可以改变参数的值,但是不能改变使用的变量的值n引用类型“传值”:传递的是变量中存放的“引用”nP72-73信息工程学院本
18、科课程信息工程学院本科课程整理课件364.7 this关键字nthis关键字在Java中表示某个对象nthis可以出现在实例方法和构造方法中,不能出现在类方法中:因为类方法被调用时允许对象没有被生成n在构造方法中使用this :例4.10n在实例方法中使用this,代表正在调用该方法的当前对象n实例方法可以操作成员变量:n实例成员变量默认格式:this.成员变量n类成员变量默认格式:类名.成员变量n通常情况下可以省略上面的“this.”和“类名.”,在省略的过程中需要注意:成员变量可能被隐藏信息工程学院本科课程信息工程学院本科课程整理课件374.8 包n包的作用:解决命名冲突,有效管理项目中的
19、类和接口n包语句:n必须做为源文件中的第一句程序代码n一个源文件最多只能有一条包语句n如果在代码中没有书写package语句,则该类将被加入到默认包(无名包)中,默认包无法被其它的包引用信息工程学院本科课程信息工程学院本科课程整理课件384.8.1 包语句n通过关键字package声明包语句npackage 包名;n如果源文件中省略了包语句,源文件中所定义的类被默认为无名包的类n包名可以是一个合法的标示符,也可以是由若干个标示符通过“.”拼接而来npackage sunrise;npackage ;nJava不允许使用java作为包名的第一部分信息工程学院本科课程信息工程学院本科课程整理课件3
20、94.8.2 有包名的类的存储n原则上来讲,源文件可以存放在任何文件夹里n有包名的字节码文件只能存放在包名对应的文件夹里,否则无法运行npackage tom.jiafei;n.class文件只能存放在“tomjiafei”目录下信息工程学院本科课程信息工程学院本科课程整理课件404.8.2 有包名的类的编译与运行n1、将例4.11的两个文件保存在“tomjiafei”目录下,在当前目录编译,字节码文件自动生成在当前文件夹信息工程学院本科课程信息工程学院本科课程整理课件414.8.2 有包名的类的编译与运行n2、在任意目录下编译源文件,然后将字节码文件拷贝入“tomjiafei”目录下,运行命
21、令同上页相同信息工程学院本科课程信息工程学院本科课程整理课件424.8.2 有包名的类的编译与运行n3、在任意目录下编译源文件,命令为: “javac d 包的父目录 源文件全路径”信息工程学院本科课程信息工程学院本科课程整理课件434.8.3 规范自己的编程习惯信息工程学院本科课程信息工程学院本科课程整理课件444.9 import语句n一个类可能需要另一个类声明的对象作为自己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。 n如果一个类想要使用的那个类和它不在一个包中,要使用import语句完成使命。n一个Java源文件可以有多个import语句,必须写在package语
22、句和类的定义之间信息工程学院本科课程信息工程学院本科课程整理课件454.9 import语句n引入自定义包中的类n1、更新classpath,将包名所对应目录的父目录添加到classpath变量中n2、“.;”表示可以加载应用程序当前目录中的无名包类,而且当前子目录下的子孙目录都可以作为包的名字来使用n使用无包名的类n想使用无包名的类,只要将这个无包名的类的字节码和当前类保存在同一目录即可信息工程学院本科课程信息工程学院本科课程整理课件464.9 import语句n避免类名混淆(解决方法:不要省略包名)n区分无包名和有包名的类: 假如一个源文件使用了无包名的A类和一个有包名的A类n使用“imp
23、ort 包名.A;” : 生成“A”的对象时,如果省略包名,”A a=new A();” 则生成的a是A的对象n使用“import 包名.*;” : 生成“A”的对象时,如果省略包名,”A a=new A();” 则生成的a是A的对象n如果一个源文件引入两个包中同名的类,不允许省略包名: 包1.A a1=new 包1.A(); 包2.A a2=new 包2.A();信息工程学院本科课程信息工程学院本科课程整理课件474.10 访问权限n类创建的对象通过“.”访问变量、调用方法,但对象操作自己的变量和使用类中的方法是有一定限制的。n访问限制修饰符(关键字)有private、protected和p
24、ublic信息工程学院本科课程信息工程学院本科课程整理课件484.10.1 私有变量和私有方法n用private修饰的成员变量和方法称为私有变量和私有方法n只有在本类中创建该类的对象时,这个对象才能访问私有成员和私有方法n例4.16n良好的编程习惯:n对于类中的所有变量,适当设计改变或者读取它们的方法,尽量不要在类外用“.变量”方式信息工程学院本科课程信息工程学院本科课程整理课件494.10.2 共有变量和共有方法n用public修饰的成员变量和方法称为共有变量和共有方法n类所创建的对象在其它类中均可以访问该对象的public变量和public方法n对于public类变量和public类方法,
25、如果该类在其它类中创建了对象,也可以通过类名来访问这些类变量和类方法信息工程学院本科课程信息工程学院本科课程整理课件504.10.3 友好变量和友好方法n不用任何访问限制修饰符的成员变量和方法,称为友好变量和友好方法n当在其它类(例B)中创建了一个类(例A)的对象后,如果A和B在同一个包中,那么A的对象能访问自己的友好对象和友好方法,否则不能访问信息工程学院本科课程信息工程学院本科课程整理课件514.10.4 受保护的成员变量和方法n用protected修饰的成员变量和方法称为受保护的成员变量和方法n当在其它类(例B)中创建了一个类(例A)的对象后,如果A和B在同一个包中,那么A的对象能访问自
26、己的友好对象和友好方法,否则不能访问n以后会涉及“受保护”和“友好”之间的区别信息工程学院本科课程信息工程学院本科课程整理课件524.10小结:访问权限访问权限访问权限同类同类同包同包不同包不同包Private可以不可以不可以友好的友好的可以可以不可以Protected可以可以不可以Public可以可以可以信息工程学院本科课程信息工程学院本科课程整理课件534.10.5 public类与友好类n在类声明时,用public修饰的类为public类,public类可以在任何一个其它的类中创建对象n如果一个类不加public修饰,则称为友好类,使用友好类之前,必须保证它们在同一个包中n不能用prot
27、ected和private修饰类信息工程学院本科课程信息工程学院本科课程整理课件54浅谈main()方法npublic static void main(String args)nmain()方法由JVM直接调用,所以用publicn所在的类不需要产生任何对象,所以用staticn不需要返回值,所以用voidn为什么main? -这是规定n有一个String类型的参数,是字符串数组,该字符串的名称“args”可以改变,但为了和Sun Java规范范例保持一致,不建议修改,作用是接受命令行的输入,用空格隔开nStatic代码块的内容会在main()之前调用信息工程学院本科课程信息工程学院本科课程
28、整理课件55浅谈main()方法信息工程学院本科课程信息工程学院本科课程整理课件564.11 基本类型的类包装nDouble类和Float类n构造方法:Double(double num); Float(float num);n返回double和float基本类型数据: doubleValue()方法 floatValue()方法信息工程学院本科课程信息工程学院本科课程整理课件574.11 基本类型的类包装nByte、Short、Integer和Long类n构造方法:Byte(byte num); Short(short num); Integer(int num); Long(long nu
29、m);n返回基本类型数据: byteValue()方法 shortValue()方法 intValue()方法 longValue()方法信息工程学院本科课程信息工程学院本科课程整理课件584.11 基本类型的类包装nCharacter类nCharacter类实现了对char基本类型的包装n构造方法:Character(char c);n返回基本数据的方法:charValue();n其它方法:nboolean isDigit(char ch):判断ch是否数字字符nboolean isLetter(char ch):判断ch是否字母字符nboolean isLetterOrDigit(char ch):判断ch是否数字或字母nboolean isLowerCase(char ch):判断ch是否小写字母nBoolean isUpperCase(char ch):判断ch是否大写字母nChar toLowerCase(char ch):返回ch的小写形式nCh
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 管道施工安装合同范本
- 出国劳动合同范本
- 辽宁省铁岭市铁岭县2025届九年级上学期12月期末考试数学试卷
- 2025年终总结汇报模板8
- 2025景观照明工程施工合同书
- 2025年合作经营合同模板示例
- 2025建筑吊车租赁合同模板
- 2025成都市房屋租赁合同样本
- 高一语文新学案:第二单元《短歌行》
- 2025房屋租赁合同范本授权标准版
- 2024版《CSCO非小细胞肺癌诊疗指南》更新要点
- 海绵城市课程设计
- 2023.05.06-广东省建筑施工安全生产隐患识别图集(高处作业吊篮工程部分)
- 广告媒体投放分包合作协议
- 小儿疼痛与镇痛的管理
- ISO15614-1 2017 金属材料焊接工艺规程及评定(中文版)
- 高二综评研究性课题研究成果
- 2024年江苏连云港市交通控股集团有限公司招聘笔试参考题库含答案解析
- 【自考复习资料】05175税收筹划(重点知识汇总)
- 美国睡眠医学会睡眠及其相关事件判读手册规则、术语和技术规
- Unit+5+Music+Listening+and+Speaking+高中英语人教版(2019)必修第二册
评论
0/150
提交评论