您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > Java面向对象程序设计第4章_类与对象.
1《Java面向对象程序设计》第4章配合Java面向对象程序设计例子源代码一起使用Powerpoint制作:耿祥义张跃平类与对象2主要内容•类•对象•参数传值•对象组合•static关键字•this关键字•包•import语句•jar文件难点•参数传值与对象组合•包和import语句导读3§4.1编程语言的几个发展阶段◆面向机器语言◆面向过程语言◆面向对象语言面向对象编程主要体现下列三个特性◇封装性◇继承◇多态4§4.2类类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。类的实现包括两部分:类声明和类体。5Java的类定义的一般格式修饰符class类名[extends父类名]{类型成员变量1;类型成员变量2;………..修饰符类型成员方法1(参数表){类型局部变量;方法体}修饰符类型成员方法2(参数表){类型局部变量;方法体}……..}6§4.2.1类声明◆类声明:class类名如:classPeople”和“class动物”称作类声明;“People”和“动物”分别是类名。◆给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守):1.如果类名使用拉丁字母,那么名字的首字母使用大写字母。2.类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写。7§4.2.2类体◆类体:类声明之后的一对大括号以及其内的内容称作类体,大括号内的内容称作类体的内容。◆类体的内容由两部分构:1.变量的声明,用来刻画属性;2.方法的定义,用来刻画功能。8§4.2.3成员变量和局部变量类体中变量声明部分所声明的变量被称作类的成员变量。在方法体中声明的变量和方法的参数被称作局部变量。1.变量的类型:成员变量和局部变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口(对象和接口见后续内容)。2.变量的有效范围:成员变量在整个类内都有效,局部变量只在声明它的方法内有效。方法参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。3.实例变量与类变量:在声明成员变量时,用关键字static给予修饰的称作类变量,否则称作实例变量(类变量也称为static变量,静态变量)。4.成员变量的隐藏:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。5.编程风格(1)一行只声明一个变量。(2)变量的名字符合标识符规定。(3)变量名字见名知意,避免容易混淆的变量名字。9§4.2.4方法方法的定义包括两部分:方法声明和方法体。一般格式为:方法声明部分{方法体的内容}1.方法声明方法声明包括方法名和方法的返回类型,如:floatarea(){…}注:方法的返回类型、方法的参数、方法的名字2.方法体方法声明之后的一对大括号“{”,“}”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句。10§4.2.5方法重载方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。11§4.2.6构造方法构造方法是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。12§4.2.7类方法和实例方法方法声明时,方法类型前面不加关键字static修饰的是实例方法、加static修饰的是类方法(静态方法)。13§4.2.8几个值得注意的问题1.对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变量进行操作。2.需要注意的是:实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。3.一个类中的方法可以互相调用,实例方法可以调用该类中的其它方法;类中的类方法只能调用该类的类方法,不能调用实例方法。14§4.3对象§4.3.1创建对象1.对象的声明PeoplezhangPing;2.为声明的对象分配内存zhangPing=newPeople();例4-1,例4-23.对象的内存模型(1)声明对象时的内存模型(2)对象分配内存后的内存模型4.创建多个不同的对象15§4.3.2使用对象1.通过使用运算符“.”对象操作自己的变量(对象的属性)2.使用运算符“.”,对象调用类中的方法(对象的功能)16§4.3.3对象的引用和实体当用类创建一个对象时,类中的成员变量在分配内存空间,这些内存空间称作该对象的实体或对象的变量,而对象中存放着引用。一个类创建的两个对象,如果具有相同的引用,那么就具有完全相同的实体。17§4.4参数传值§4.4.1基本数据类型参数的传值对于基本数据类型的参数,向该参数传递的值的级别不可以高于该参数的级别,否则在编译时就会出错。例4-418§4.4.2引用类型参数的传值当参数是引用类型时,“传值”传递的是变量中存放的“引用”,而不是变量所引用的实体。例4-519§4.4.3可变参数可变参数是指在声明方法时不给出参数列表中从某项直至最后一项参数的名字和个数,但这些参数的类型必须相同。可变参数使用“…”表示若干个参数,这些参数的类型必须相同,最后一个(可变)参数必须是参数列表中的最后一个参数。例如:publicvoidf(int...x)例4-620§4.4.4有理数的类封装面向对象编程核心思想之一就是将数据和对数据的操作封装在一起。。1.Rational(有理数)类2.用Rational对象做运算Rational.javaMainClass.java21§4.5对象的组合一个类可以把对象作为自己的成员变量,如果用这样的类创建对象,那么该对象中就会有其它对象,也就是说该对象将其他对象作为自己的组成部分,或者说该对象是由几个对象组合而成。例4-722§4.6static关键字用static修饰的变量类变量没有用static修饰的变量实例变量方法声明中用static修饰的方法—类方法方法声明中不用static修饰的方法—实例方法23§4.6.1实例变量和类变量的区别如果类中有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其它对象的这个类变量。也就是说对象共享类变量。例4-824§4.6.2实例方法和类方法的区别当用类创建对象后,类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。例4-925§4.7this关键字this是Java的一个关键字,表示某个对象。this可以出现在实例方法和构造方法中,但不可以出现在类方法中。§4.7.1在构造方法中使用thisthis关键字出现在类的构造方法中时,代表使用该构造方法所创建的对象。例4-1026关于用this调用构造方法的问题:构造方法是在创建对象时被java系统自动调用的,不能在程序中像调用其他方法一样去调用它(必须通过new自动调用它)。但可以在一个构造方法里调用其他重载的构造方法,不是用构造方法名,而是用this(参数列表)的形式,根据其中的参数列表,选择相应的构造方法。用this调用构造方法,但此语句必须放在构造方法的首行。ClassPoint{intx,y;Point(intx1,inty1){x=x1;y=y1;}Point(){this(0,0);}}27§4.7.2在实例方法中使用this当this关键字出现实例方法中时,代表正在调用该方法的当前对象。当实例成员变量在实例方法中出现时,默认的格式是:this.成员变量。当static成员变量在实例方法中出现时,默认的格式是:类名.成员变量。注:①通常可以省略实例成员变量前的this和类变量前的类名。但当局部变量和与其同名时,成员变量前的this或类名就不能省略。②this不能出现在类方法中,因为类方法可通过类名调用,这时可能还没有任何对象诞生。28§4.8包包是Java语言中有效地管理类的一个机制。包名的目的是有效的区分名字相同的类。29§4.8.1包语句通过关键字package声明包语句。package语句作为Java源文件的第一条语句,为该源文件中声明的类指定包名。package语句的一般格式为:package包名;30§4.8.2有包名的类的存储目录程序如果使用了包语句,例如:packagetom.jiafei;那么存储文件的目录结构中必须包含有如下的结构…\tom\jiafei如:c:\1000\tom\jiafei并且要将源文件编译得到的类的字节码文件保存在目录c:\1000\tom\jiafei中(源文件可以任意存放)。31§4.8.3运行有包名的主类如果主类的包名是tom.jiafei,那么主类的字节码一定存放在…\tom\jiefei目录中,运行时必须到tom\jiefei的上一层(即tom的父目录)目录中去运行主类。假设tom\jiefei的上一层目录是1000,那么,必须如下格式来运行:C:\1000\javatom.jiafei.主类名注:主类名是:“包名.主类名”例4-1132§4.9import语句一个类可能需要另一个类声明的对象作为自己的成员或方法中的局部变量,如果这两个类在同一个包中,当然没有问题。如果一个类想要使用的那个类和它不在一个包中,要使用import语句完成使命。33§4.9.1引入类库中的类如果用户需要类库中的类就必须使用import语句,如:importjava.util.Date;例4-1234§4.9.2引入自定义包中的类用户程序可以使用tom.jiafei包中的类,即使用非类库中有包名的类,也要使用import语句,如:importtom.jiafei.*;例4-13,例4-1435§4.9.3使用无包名的类如果一个类想使用无名包中的类,只要将这个无包名的类的字节码和当前类保存在同一目录中即可。例4-1536§4.9.4避免类名混淆1.区分无包名和有包名的类如果想同时使用tom.jiafei包中的A类和无名包中的A类,就不能省略包名,例如:Aa1=newA();tom.jiafei.Aa2=newtom.jiafei.A();2.区分有包名的类如果一个源文件引入了两个包中同名的类,那么在使用该类时,不允许省略包名,比如:tom.jiafei.Abird=newtom.jiafei.A();sun.com.Agoat=newsun.com.A();37§4.10访问权限访问限制修饰符有private、protected和public,都是Java的关键字,用来修饰成员变量或方法。38§4.10.1私有变量和私有方法用关键字private修饰的成员变量和方法称为私有变量和私有方法。对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。例4-16,例4-1739§4.10.2共有变量和共有方法用public修饰的成员变量和方法被称为共有变量和共有方法。我们在任何一个类中用类Tom(p95)创建了一个对象后,该对象能访问自己的public变量和类中的public方法(也可以通过类名来操作成员变量、方法)。*在类A用类B创建对象b,可用b访问B中的共有变量和方法。40§4.10.3友好变量和友好方法不用private、protected和public修饰的称为友好变量和友好方法。当在另外一个类中用类Tom创建了一个对象后,如果这个类与Tom类在同一个包中,那么该对象能访问自己的友好变量和友好方法。在任何一个与Tom同一包中的类中,也可以通过Tom类的类名访问Tom类的类友好成员变量和类友好方法。*A和B类在同一包,在A中B的对象能访问自己的友好变量。41§4.10.4受保护的成员变量和方法用protected修饰的成员变量和方法被称为受保护的成员变量和受保护的方法。42§4.10.5public类与友好类类声明时,如果在关键字class前面加上public关键字,就称这样的类是一个public类。可以在任
本文标题:Java面向对象程序设计第4章_类与对象.
链接地址:https://www.777doc.com/doc-2881775 .html