资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章Java面向对象程序设计 4 1面向对象程序设计的基本概念4 2类的创建4 3对象的创建和使用及this关键字4 4继承及final关键字4 5抽象类4 6接口4 7多态及super关键字4 8程序包4 9系统类库简介 本章内容 技能目标完成ATM取款机的服务功能 为用户提供存款 取款 余额查询 修改密码 查看用户信息等服务 知识目标理解类和对象的概念 掌握类的定义及对象的创建 掌握对象的使用 掌握类的封装 继承和多态 理解抽象类的定义并学会使用抽象类 掌握接口的声明及实现方法 掌握包的定义及使用的基本方法 项目任务开发一个ATM取款机管理系统 该系统的主要功能是用户输入卡号 密码通过验证后 就可以实现存款 取款 余额查询 修改密码 查看用户信息等操作 4 1面向对象程序设计的基本概念面向对象的程序设计方法就是将客观事物抽象成为 类 并通过类的 继承 实现软件的可扩充性和可重用性 类是具有共同特性和行为的事物的抽象 是一种特殊数据类型 对象是类的实例 对象是客观世界中的某个具体事物 客车 事物的属性 静态 就是变量 载客数量 燃料容量 耗油均值 事物的行为 动态 就是方法 行驶 起动 刹车 属性 成员变量行为 成员方法 对象 面向对象程序设计的核心技术封装 继承 多态性通过封装可以隐藏类的实现细节 也可以避免对类中数据的直接操作 类是封装的基本单元 继承是对类的功能的重用和扩充 多态性是指方法的名字相同 但实现不同 封装性模块化 将数据和对数据的操作组合起来 每个对象的源文件可以是相互独立的 可以被不同的程序调用信息隐藏 通常定义一个公共接口 方法实现对对象的访问 可以调整对象的私有信息和方法 而不会对其他调用它的对象产生影响 继承性父类和子类 子类继承 拥有 父类所有的数据和方法 同时子类可以有新的数据和方法 树型结构 层次化结构 根 基类 多重继承 Java中仅仅支持单一继承 同时Java采用Interface 接口 实现多重继承 多态性表现在继承中 方法的覆盖子类从父类继承 extends扩展 而来在不同的子类中有不同的表现形式表现在用一个类中 方法的重载 4 2类的创建类的声明格式 类首声明定义类的名字 访问权限以及与其它类的关系等 类主体定义类的成员 包括变量 数据 和方法 行为 类的定义语法结构 修饰符 class类名 extends父类名 implements接口名序列 类主体 类的数据 反映了类的属性和状态 类的行为 对数据的操作 成员变量的定义格式为 修饰符 数据类型变量名 初值 成员方法的定义格式为 修饰符 返回值类型方法名 参数列表 方法体 说明 类 修饰符 通常为访问控制符 类型说明符 可以使用的修饰符有public friendly 缺省 final abstract class 是定义类的关键字 中的内容为可选内容 类名 要符合标识符的命名规范 体现类的功能 习惯上首字符大写 extends父类名 表示该类继承了一个类 父类名指明被继承的类名称 implements接口名序列 表示该类所实现的接口 接口名序列指明该类要实现的一个或多个接口的名称 若实现多个接口则用逗号分隔 类主体 是类设计的主体部分 一般包括成员变量和成员方法 成员变量的声明格式 static final static 表示是一个类成员变量 静态变量 final 表示是一个常量 最终成员变量 例 finaldoublePI 3 1415926 修饰符 表示变量的访问权限 缺省访问 friendly public protected和private 作用域 整个类 同一类中的所有方法都可以对其访问 publicclassCircle privatedoubleradius 定义私有成员变量doublearea 定义缺省成员变量finaldoublePI 3 14 定义最终变量voidsetRadius doubler 定义缺省方法 radius r publicdoublegetArea 定义公共方法 area pi radius radius returnarea 成员变量和局部变量 成员变量 在类体中所声明的变量局部变量 在方法体中声明的变量和方法的参数声明局部变量 定义局部变量的基本语法格式同定义成员变量类似 所不同的是不能使用static关键字进行修饰 但可以使用final关键字 final 可选 用于指定该局部变量为常量 final publicclassApple publicStringcolor 声明公共变量colorpublicstaticintcount 声明静态变量countpublicfinalbooleanMATURE true 声明常量MATURE并赋值 publicvoidgrow finalfloatSTATE 3 5f 声明常量STATEintage 声明局部变量age 成员变量 局部变量 变量的有效范围 变量的有效范围是指该变量在程序代码中的作用区域 在该区域外不能直接访问变量 有效范围决定了变量的生命周期 变量的生命周期是指从声明一个变量并分配内存空间 使用变量 然后释放该变量并清除所占用内存空间的一个过程 进行变量声明的位置 决定了变量的有效范围 根据有效范围的不同 可将变量分为以下两种 1 成员变量 在类中声明 在整个类中有效 2 局部变量 在方法内或方法内的复合代码块 与 之间的代码 中声明的变量 在复合代码块声明的变量 只在当前复合代码块中有效 在复合代码块外 方法内声明的变量在整个方法内都有效 publicclassOlympics privateintmedal All 800 成员变量publicvoidChina intmedal CN 100 方法的局部变量if medal CN 1000 代码块intgold 50 代码块的局部变量medal CN 50 允许访问medal All 150 允许访问 变量的有效范围示例 成员方法的声明格式 throws 方法体 修饰符 方法的访问权限 缺省的 friendly public protected和private static 类方法 静态方法 abstract 抽象方法 无方法体的方法 final 最终方法 不能被子类改变 throws 表示抛出异常 例 根据几何中的坐标位置 定义一个Point类ClassPoint privateintx y publicvoidsetPoint inta intb x a y b publicintgetX returnx publicintgetY returny publicStringtoString return x y 类成员变量方法 修饰符一览表 构造函数 或构造方法 构造方法的名字必须与类名相同 且不能有返回值 用户不能直接调用构造方法 必须通过关键字new自动调用它 构造方法的主要作用是在创建一个类对象时对这个对象中的所有成员变量进行初始化 缺省 默认 构造方法是一个特殊的构造方法 它没有参数和函数体 一般由系统隐含自动定义 用缺省构造方法初始化类对象时 由系统用缺省值初始化类对象的数据成员 注意 如果程序员定义了一个或多个构造函数 则自动屏蔽掉默认的构造函数 publicclassApple publicStringcolor 声明公共变量colorpublicstaticintcount publicApple 构造方法 publicclassStudent privateintsno privateStringsname privateStringsex publicStudent intno Stringname charc sno no sname name sex c 缺省构造函数 自定义构造函数 4 3对象的创建和使用 4 3 1创建对象第一种形式的创建步骤 第一步 声明对象 第二步 实例化对象 new 参数1 参数2 例 Studentstu 声明对象stu newStudent 实例化对象 第二种创建对象的形式 new 参数1 参数2 例 Studentstu newStudent 实例化就是为对象分配存储空间 并同时对对象进行初始化 这些工作分别用new运算符和类的构造方法来完成 构造方法和对象的初始化类的构造方法是一种特殊方法 作用是在创建对象时Java系统调用构造方法去初始化新建对象的成员变量 例 Studentstu newStudent 22 xiaoming 男 如果没有自定义构造方法 则Java调用类的默认构造方法 Java将使用缺省值 数值为0 对象为null 布尔值为false 字符为 0 来初始化成员变量 例 Studentstu newStudent 构造方法是可以重载的同名但参数不一样的构造方法publicclassStudent privateintsno privateStringsname privatecharsex publicStudent intno Stringname charc sno no sname name sex c publicStudent 4 3 2对象的使用成员变量的引用格式 成员方法的调用格式 publicclassCircle privatedoubleradius 定义私有成员变量doublearea 定义缺省成员变量finaldoublePI 3 14 定义最终变量Circle doubler radius r publicdoublegetArea 定义公共方法area PI radius radius returnarea publicstaticvoidmain Stringargs doubles1 Circlec1 newCircle 10 c1 setRadius 10 s1 c1 getArea System out println 半径为10的圆的面积为 s1 Static关键字 用于修饰成员 成员变量和成员方法 被修饰后的成员具备以下特点 随着类的加载而加载优先于对象存在被所有对象所共享可以直接被类名调用使用注意静态方法中不可以写this super关键字主函数是静态的 类成员与实例成员 类成员 静态成员 在Java的类设计中 用修饰符static声明成员 类成员包括类成员变量和类成员方法 如果static用来修饰成员变量 则该成员变量称为类成员变量 在访问时可以用 类名 变量名 的形式进行访问 如果static用来修饰成员方法 则该成员方法称为类成员方法 在调用时可以用 类名 方法名 参数列表 进行调用 实例成员 不通过修饰符static声明的成员 包括实例成员变量和实例成员方法 只有创建对象之后才可以访问 通过对象才能访问实例成员变量和实例成员方法 静态成员变量与实例成员变量的区别 声明区别 静态成员变量要使用static 而实例成员变量不需要存储区别 1 当创建一个对象时 系统会为对象的每一个实例成员变量分配一个存储单元 使得属于不同对象的实例成员变量具有不用的存储空间 堆 当一个对象的实例成员变量值发生变化时不会影响到其他对象 2 加载类时 系统为类的静态成员变量分配一个存储单元 使得所有对象共享此变量 这些静态成员变量在程序执行过程中 如果某个对象改变了静态成员变量的值 其他对象在引用该静态成员变量时 引用的便是改变之后的值 引用区别 1 实例成员变量只能通过对象来访问 而类成员变量可以直接通过类来访问 也可以通过对象来访问 查看实例StaticDeo 静态成员方法与实例成员方法的区别 在类中声明成员方法时 没有使用static修饰的方法为实例成员方法 使用static修饰的方法为类成员方法 4 3 3对象的消毁对象的生命周期 对象的创建 使用和销毁这一过程 对象的销毁 当对象使用完毕后 释放对象所占有的资源 如分配给它的内存 对象销毁的方法Java能自动判断对象是否在使用 并自动销毁不再使用的对象 收回对象所占的资源 4 4类的封装 目的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号