Java-第4章-类和对象_第1页
Java-第4章-类和对象_第2页
Java-第4章-类和对象_第3页
Java-第4章-类和对象_第4页
Java-第4章-类和对象_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4类和对象4.1引例:“人”的抽象4.2类4.3对象4.4类的封装4.5静态成员4.6包和实用类4.7应用实例4.1引例:“人”的抽象【例4-1】Person类及对它的调用Person.java-:private+:public4.2类4.2.1类的定义4.2.2成员变量4.2.3成员方法4.2.1类的定义最简单的类定义格式:[Modifiers]classClassName{ ClassBody}publicclassGoods{ privateclassContent{...} ...}Modifiers:被访问权限,public或默认、abstract、final(不允许该类被继承)4.2.2成员变量类的成员变量就是类的属性,描述了类的特性两种形式:类变量〔static静态的,类的所有对象共享〕和实例变量〔非静态的〕4.2.2成员变量实例变量的声明语法:[Modifiers]DataTypememberName;例如:privateStringname;privateintage;4.2.2成员变量实例变量的初始化声明实例变量时可以直接赋初值,例如:privateStringname="张三";privateintage=12;如果没有被赋初值,它们将被按照数据类型的默认值初始化4.2.3成员方法成员方法描述了类能够完成的操作,并负责对私有属性的赋值和取值成员方法也有静态和非静态之分,分别被称为类方法和实例方法4.2.3成员方法实例方法的声明语法:[Modifiers]ResultTypemethodName(parameterList){ MethodBody}例如:publicintgetAge(){...}publicvoideat(Stringfood){...}4.2.3成员方法返回值返回类型是void以外的其它类型要求此方法必须有返回值有返回值的方法,结束方法体的最后一条可执行语句必须是return例如:privateintage;publicintgetAge(){returnage;}4.2.3成员方法成员方法的重载[C语言没有函数重载]同一个类中允许有多个同名但参数列表各不相同的方法,即成员方法的重载所谓参数列表各不相同,是指参数类型、个数和顺序至少有一项不同JVM将根据参数的差异调用相应的方法注意,重载对于方法的访问修饰符、返回类型没有相同或不同的要求4.2.3成员方法局部变量成员方法中可以声明局部变量,还可以在方法的任何一个程序块中声明变量局部变量的作用域仅限于声明它的方法或程序块方法声明中的参数也是只属于方法的局部变量注意:局部变量在使用前必须由程序显式赋初值,否那么编译程序会报错4.3对象4.3.1对象的声明和创立4.3.2对象的使用4.3.1对象的声明和创立对象的声明语法:[Modifiers]ClassNameobjectName[,...];例如:privateStringname;Personp1,p2;声明对象仅声明了对象的引用,此时对象为null,因此还不能被使用4.3.1对象的声明和创立构造方法用于创立类的实例对象,是一种特殊的成员方法。它的主要工作是初始化成员变量语法:[Modifiers]ClassName(parameterList){ MethodBody}4.3.1对象的声明和创立默认构造方法没有参数列表的构造方法是默认构造方法类定义中,如果用户没有声明构造方法,Java将自动生成一个仅有一条语句“super();”的默认构造方法,表示将调用父类的默认构造方法这条语句也将是所有构造方法的第一条语句,只要这些构造方法中没有对父类构造方法的调用4.3.1对象的声明和创立构造方法的特点构造方法的方法名必须与类名相同。构造方法不具有任何返回类型。包括void。任何一个类都有构造方法。如果没有显式定义构造方法,系统会定义一个默认的构造方法。4.3.1对象的声明和创立构造方法的重载例如:publicclassPerson{ publicPerson(){} publicPerson(Stringn,inta){ name=n; age=a; } ...}4.3.1对象的声明和创立对象的创立声明对象之后,还必须用new运算符创立对象,即为之分配存储空间。语法:newClassName(parameterList)4.3.1对象的声明和创立new运算符首先为对象分配存储空间,再按照类声明的次序依次执行所有成员变量的初始化语句和初始化块,之后调用构造方法初始化实例变量,最终返回对象的引用4.3.1对象的声明和创立this关键字关键字this表示当前对象的引用,通常用来区分同名的实例变量和局部变量,例如:=name;this.age=age;构造方法中也可以用this()来调用其它的构造方法,例如:publicPerson(){ this("",0); //必须位于首行,此处调用构造函数Person(String,int)}4.3.1对象的声明和创立初始化块类定义中,还可以有多个的初始化块在创立类的对象时,初始化块将先于构造方法被执行初始化块由一对大括号括起来,可以包含多条语句,一般用来对成员变量初始化Java的析构C++的析构函数:释放资源。~Person(){}Java具有自动内存回收机制。可以实现finalize()方法4.3.2对象的使用引用对象引用对象的成员变量和调用对象的成员方法使用“.”运算符,格式是:objectName.memberVariableNameobjectName.memberMethodName(parameterList)例如:System.out.println("我是"++",今年"+p1.age+"岁");4.3.2对象的使用传递参数按值传递:将实际参数的值传递给方法中对应的形式参数按引用传递:将实际参数的引用地址传递给方法中对应的形式参数由于实际参数和形式参数的地址相同,方法执行时对形式参数的操作实际上就是对实际参数的操作,形式参数值的改变会影响实际参数的值在Java里面只有根本类型和直接使用双引号定义字符串是按值传递,其它的都是按引用传递。Stringstr="HelloJava";4.4类的封装4.4.1访问控制属性4.4.2设置类的访问控制属性4.4.3设置类成员的访问控制属性4.4.1访问控制属性修饰符

同一类

同一包

不同包的子类

所有类

私有(private)

允许

默认允许

允许

保护(protected)

允许

允许

允许

公共(public)允许

允许

允许

允许

没有public、protected、private那么称为默认。4.4.2设置类的访问控制属性对于外部类来说,访问控制属性只能是默认和public的,不能是private和protected的private和protected访问属性只能使用在内部类上4.4.2设置类的访问控制属性如果将假设干个类定义放在同一个java文件中,使用public修饰符的类最多只能有一个如果文件中有public类,文件必须与此类同名4.4.3设置类成员的访问控制属性类的成员变量和成员方法的访问控制属性可以有四种:默认、public、private和protected在设计类时,基于封装的要求,通常对支持类自身运行的成员声明为private,仅把作为其他对象访问自己的接口的方法根据需要声明为默认、public或protected,一般是public4.5静态成员4.5.1静态变量4.5.2静态方法4.5.1静态变量静态变量是声明时使用了static修饰符的变量,例如:privatestaticinttotal;系统仅在加载类时创立一份静态变量副本,该副本将被此类的所有对象共享静态变量与类有关而与对象无关,这也是静态变量被称为类变量的原因4.5.1静态变量引用静态变量使用类名和对象名都可以【例4-2】静态变量的应用PersonStatic.java4.5.1静态变量静态初始化块可以使用在类加载时即被执行的静态初始化块为静态变量提供初值语法:static{ //初始化静态变量语句}注意,静态初始化块只能初始化静态变量4.5.2静态方法静态方法是使用static修饰的方法,方法中只能访问局部变量和静态变量、调用静态方法,不能直接引用实例成员语法:[Modifiers]staticResultTypemethodName(parameterList){ MethodBody}4.5.2静态方法静态方法可以通过对象名和类名来调用如果想在静态方法中访问实例成员,必须先创立对象,然后通过对象名引用静态方法常用来为应用中的其它类提供实用工具Java类库中大量的静态方法正是因此而定义的,例如Math类中的sin()、cos()和random()等方法4.6包和实用类4.6.1包4.6.2Java标准包4.6.3实用类4.6.1包Java提供了包机制来组织类,将所有的类按一定的原那么分别放置在不同的包中,同一个包中不允许有同名的类包就是目录,包中还可以有包,称为子包,即子目录创立包意味着在文件系统下创立与包同名的目录4.6.1包声明包:packagepackageName[.packageName1[.packageName2[...]]];4.6.1包导入包:importpackageName[.packageName1[.packageName2[...]]].ClassName|*;包限定:packageName[.packageName1[.packageName2[...]]].ClassName4.6.1包注意:如果一个类属于默认包,那么它只能被同在默认包中的类引用,而无法被其它包中的类引用因此应尽量防止使用默认包4.6.2Java标准包4.6.3实用类根本数据类型包装类4.6.3实用类数学Math类staticdoubleE,自然对数的底数estaticdoublePI,圆的周长与直径之比π4.6.3实用类4.6.3实用类【例4-3】比较两个随机数的大小Comparisons.java类之间的关系关联(Association):一对一、一对多、多对多课程、老师、学生实线箭头依赖(Dependency):类之间的调用关系。虚线箭头类之间的关系聚集(Aggregation):整体局部之间的关系。点与矩形、汽车与车轮。实线菱形箭头泛化(Generalization):继承。实线三角箭头实现(Realization):类与接口之间的关系。虚线三角箭头4.7应用实例4.7.1点和矩形的抽象4.7.2通讯录项4.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论