Java面向对象程序设计第7讲.ppt

上传人:max****ui 文档编号:6365577 上传时间:2020-02-24 格式:PPT 页数:41 大小:529.05KB
返回 下载 相关 举报
Java面向对象程序设计第7讲.ppt_第1页
第1页 / 共41页
Java面向对象程序设计第7讲.ppt_第2页
第2页 / 共41页
Java面向对象程序设计第7讲.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
第5章面向对象程序设计 5 1类 class 类是组成Java程序的基本元素 它封装了一系列的变量 即数据成员 也域 和方法 即成员方法 是一类对象的原型 创建一个新的类 就是创建一个新的数据类型 实例化一个类 就得到一个对象 因此 对象就是一组变量和相关方法的集合 其中变量表明对象的状态 属性 方法表明对象所具有的行为 类定义语句的一般形式为 修饰符 class类名 extends父类名 implements接口名表 成员变量声明 类体方法成员声明 5 1 1类定义 1 例5 1 定义一个名为Rect表示长方形的类 它仅包含double类型的长length和宽width两个数据成员 classRect doublelength doublewidth 在类的定义中 可加入对数据成员进行操作的方法成员 5 1 1类定义 2 例5 2 定义一个名为Rectangle表示长方形的类 它包含double类型的长length和宽width两个数据成员和设置长方形长宽值的方法setDim 计算长方形面积的方法area classRectangle doublelength doublewidth doublearea returnlength width voidsetDim doublew doublel width w length l 5 1 1类定义 3 在一个程序中 有时需要定义多个类 多个类的定义形式有两种 并列和嵌套 常见的多个类定义形式为并列定义 即一个类接着一个类进行定义 它们之间是并列的关系 另一种形式为嵌套定义 即在一个类中定义另外的类 它们之间是包含和被包含的关系 可分别称为包含类和内部类 或嵌套类 采用何种形式定义多个类 由类之间的访问关系确定 5 1 1类定义 4 5 1 1类定义 5 类定义了一个类型 type 与Java语言提供的几种基本类型一样 类型用来声明 定义该类型的变量 例如 下面的语句 Rectrect1 声明变量rect1的类型为类Rect 类型为类的变量与基本类型变量有所不同 类是一种引用 reference 类型 实际上 rect1是一个对类型为类Rect的对象的引用 rect1不是对象本身 可理解为一个指针 上述声明仅生成一个空 null 引用 一旦定义了所需的类 就可以创建该类的变量 创建类的变量称为类的实例化 类的变量也称为类对象 类的实例等 类的对象是在程序运行中创建生成的 其所占的空间在程序运行中动态分配 当一个类的对象完成了它的使命 为节省资源 Java的垃圾收集程序就会自动收回这个对象所占的空间 即类对象有自己的生命周期 5 1 2类对象 1 5 1 2类对象 2 1 创建对象创建类的对象需用new运算符 一般形式为 对象名 new类名 new运算符用指定的类在内存中分配空间 并将存储空间的引用存入语句中的对象变量 例如 rect1 newRect new运算符也可以与类声明一起使用来创建类的对象 例如 Rectrect1 newRect 2 引用对象在创建了类的对象后 就可以对对象的各个成员进行访问 进行各种处理 访问对象成员的一般形式为 对象名 数据成员名对象名 成员方法名 方法名带圆括号 5 1 2类对象 3 运算符 称为成员运算符 在对象名和成员名之间起到连接的作用 指明是哪个对象的哪个成员 例如 设已经定义了例5 2中的Rectangle类 可以用如下的方法来引用对象的成员 Rectangler newRectangle 定义类的对象r length r width 引用对象的数据成员r area 引用对象的成员方法 5 1 2类对象 4 例5 3 利用例5 1定义的类Rect 计算长和宽分别为20和10的长方形面积 classRectDemo publicstaticvoidmain Stringargs Rectrect1 newRect 为对象rect1分配存储空间doublearea rect1 width 20 向数据成员赋值rect1 length 10 area rect1 width rect1 length 对数据成员运算System out println 长方形面积是 area 运行结果如下 长方形面积是 200 0 5 1 2类对象 4 例5 5 用例5 2中定义的类Rectangle分别计算长 宽分别为20 10和6 3的两个长方形面积 classRectDemo2 publicstaticvoidmain Stringargs Rectanglerect1 newRectangle Rectanglerect2 newRectangle doublear rect1 setDim 20 10 初始化每个长方形rect2 setDim 6 3 5 1 2类对象 5 5 1 2类对象 5 ar rect1 area System out println 第一个长方形的面积是 ar ar rect2 area System out println 第二个长方形的面积是 ar 程序运行结果如下 第一个长方形的面积是 200 0第二个长方形的面积是 18 0 在Java中 任何变量在被使用前都必须先设置初值 Java提供了为类的成员变量赋初值的专门功能 构造方法 构造方法是一种特殊的成员方法 特殊性 1 构造方法名与类名相同 2 构造方法不返回任何值 也没有返回类型 3 每一个类可以有零个或多个构造方法 4 构造方法在创建对象时自动执行 一般不能显式地直接调用 5 1 3构造方法 1 例5 6 分别计算长 宽分别为20 10和6 3的两个长方形面积 本程序用构造方法来初始化长方形的大小 classRectConstructor doublelength doublewidth doublearea returnlength width RectConstructor doublel doublew length l width w 5 1 3构造方法 2 classRectDemo3 publicstaticvoidmain Stringargs RectConstructorrect1 newRectConstructor 20 10 RectConstructorrect2 newRectConstructor 6 3 doublear ar rect1 area System out println 第一个长方形的面积是 ar ar rect2 area System out println 第二个长方形的面积是 ar 程序运行结果如下 第一个长方形的面积是 200 0第二个长方形的面积是 18 0 5 1 3构造方法 3 在类和类的成员定义时可以使用一些修饰符来对类和成员的使用作某些限定 一般将修饰符分为两类 访问控制符和非访问控制符 访问控制符有public protected private等 它们的作用是给予对象一定的访问权限 实现类和类中成员的信息隐藏 非访问控制符作用各不相同 有static final native volatile abstract等 某些修饰符只能应用于类的成员 某些修饰符既可应用于类也可应用于类的成员 5 1 4类和成员的修饰符 1 1 static修饰符 修饰类的成员变量和方法成员 使它们成为静态成员 也称为类成员 静态成员存储于类的存储区 属于整个类 而不属于一个具体的类对象 因为静态成员属于整个类 所以它被所有该类对象共享 在不同的类对象中访问静态成员 访问的是同一个 注意两点 1 静态方法不能访问属于某个对象的成员变量 而只能处理属于整个类的成员变量 即静态方法只能处理静态变量 2 可以用两种方式调用静态成员 它们的作用相同 变量 类名 变量 类对象 变量 方法 类名 方法名 类对象 方法名 5 1 4类和成员的修饰符 2 例5 8 静态成员的使用 classStaticDemo staticinta 42 staticintb 99 staticvoidcallme System out println a a 5 1 4类和成员的修饰符 3 classStaticByName publicstaticvoidmain Stringargs StaticDemo callme System out println b StaticDemo b 程序运行结果如下 a 42b 99 5 1 4类和成员的修饰符 4 5 1 4类和成员的修饰符 5 2 final修饰符 可应用于类 方法和变量 final的意义为终极或最终 final类不能被继承 即final类无子类 final方法不能被覆盖 即子类的方法名不能与父类的final方法名相同 final变量实际上是Java语言的符号常量 可在定义时赋初值或在定义后的其他地方赋初值 但不能再次赋值 习惯上使用大写的标识符表示final变量 例如 finaldoublePI 3 1416 finaldoubleG 9 18 因为final变量不能改变 没有必要在每个对象中进行存储 可以将final变量声明为静态的 以节省存储空间 例如 staticfinaldoublePI 3 1416 3 abstract修饰符abstract修饰符可应用于类和方法 称为抽象类和抽象方法 抽象类需要继承 抽象方法需要在子类中实现才有意义 4 native修饰符native修饰符一般用来声明用其他语言如C C FORTRAN 汇编等书写方法体并具体实现方法功能的特殊方法 由于native方法的方法体使用其他语言编写 所以所有的native方法都没有方法体 native方法可应用于实时性强 执行效率高 运行速度要求较高的场合 5 1 4类和成员的修饰符 5 5 synchronized修饰符synchronized修饰符可应用于方法或块 在多线程程序中 对用于共享的方法和块加互斥锁 使得任一时刻 synchronized方法或块只能由一个线程执行或操作 5 1 4类和成员的修饰符 5 5 1 5类的使用 1 1 私有成员的访问为了降低类间的耦合性 可以为类成员指定private修饰符 表示该成员只能在该类内部访问 若需要在其他类中访问私有成员 只能通过取数和送数的方法来访问 这样的方法常命名为getXxx 和setXxx 等 例5 9 私有成员的访问 classRectangleRC privatedoublelength privatedoublewidth doublegetLength 定义取长方形边长的方法returnlength doublegetWidth returnwidth 5 1 5类的使用 2 5 1 5类的使用 3 RectangleRC doublel doublew length l width w classRectDemo5 publicstaticvoidmain Stringargs RectangleRCrect1 newRectangleRC 8 7 doublear rect1 getLength rect1 getWidth System out println 长方形的面积是 ar 2 方法参数是类的对象方法的参数类型可以是引用类型 类 类的对象中实际存储为对象的引用 在调用类参数时方法间传送的是引用 尽管Java采用值传送 引用从调用方法单向传送到被调方法 但由于调用方法与被调方法对应类参数的引用相同 它们引用同一对象 所以 若在被调方法中修改了引用类型形式参数的取值 则调用方法对应的实际参数也将发生相应的变化 即调用方法与被调方法之间是 引用单向传送 数据双向传送 应用引用类型的方法参数 可在方法间传送数据 5 1 5类的使用 4 例5 10 引用类型的方法参数是方法间传送数据的桥梁 classRefParameter doublewidth length area RefParameter doublew doublel width w length l voidcalArea RefParameterr r area r width r length 5 1 5类的使用 5 classPassObject publicstaticvoidmain Stringargs RefParameterrr newRefParameter 10 20 rr calArea rr System out println 长方形面积为 rr area 程序运行结果如下 长方形面积为 200 0 5 1 5类的使用 6 5 1 5类的使用 7 3 方法返回值为类的对象在Java语言中 方法的返回值类型也可以为引用类型 例如 类 5 1 5类的使用 8 例5 11 方法的返回值类型为引用类型 classRetClass doublewidth length area RetClass doublew doublel width w length l RetClasscalArea RetClassr r area r width r length returnr classReturnObject publicstaticvoidmain Stringargs RetClassrr newRetClass 10 20 rr rr calArea rr System out println 长方形面积为 rr area 程序运行结果如下 长方形面积为 200 0 5 1 5类的使用 9 4 类对象作为类的成员类的数据成员也可以是引用类型的数据 如数组 字符串和类等 若一个类的对象是一个类的成员时 要用new运算符为这个对象分配存储空间 在包含类数据成员的类及类的实例中可以访问类数据成员的成员 5 1 5类的使用 10 classRectangleC 具有两个成员的类RectCr newRectC 10 20 类成员要分配空间doublearea 基本类型成员 classClassMember publicstaticvoidmain Stringargs RectangleCrr newRectangleC rr area rr r width rr r length System out println 长方形面积为 rr area 程序运行结果如下 长方形面积为 200 0 5 1 5类的使用 11 5 内部类 Innerclass 内部类 也称为嵌套类 被附加到JDK1 1及更高版本中 内部类允许一个类定义被放到另一个类定义里 一个语句块里或一个表达式内部 内部类是一个有用的特征 因为它们允许将逻辑上同属性的类组合到一起 并在另一个类中控制一个类的可视性 5 1 5类的使用 12 例5 13 在一个类中定义类 内部类 classRectDemo6 publicstaticvoidmain Stringargs doublear classRectangleR doublelength doublewidth doublearea returnlength width 返回面积 程序运行结果如下 长方形的面积是 56 0 5 1 5类的使用 12 voidsetDim doublew doublel width w length l RectangleRrect1 newRectangleR RectangleRrect2 newRectangleR rect1 setDim 10 20 初始化每个长方形rect2 setDim 3 6 ar rect1 area System out println 第一个长方形面积是 ar ar rect2 area System out println 第二个长方形面积是 ar 5 1 5类的使用 13 程序运行结果如下 第一个长方形面积是 200 0第二个长方形面积是 18 0因为内部类定义在一个类中 因此内部类的名称不能与所嵌套的类相同 而且只能在定义的范围中使用 内部类具有下面一些特性 1 内部类可以被定义在方法中 它可以访问嵌套类的方法的final变量 5 1 5类的使用 14 2 内部类可以使用所嵌套类的类变量和实例变量以及所嵌套的块中的本地变量 3 内部类可以被定义为abstract抽象类 4 内部类可以被声明为private或protected 以便防护它们不受来自外部类的访问 访问保护不阻止内部类使用其他类的任何成员 5 一个内部类可以作为一个接口 由另一个内部类实现 5 1 5类的使用 15 6 声明为static的内部类成为顶层类 这些内部类失去了在本地范围和其他内部类中使用数据或变量的能力 7 内部类不能声明任何static成员 只有顶层类可以声明static成员 因此 一个需求static成员的内部类必须使用来自顶层类的成员 5 1 5类的使用 16
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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