




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SISE Java语言程序 设计实用教程 Java语言程序设计实用教程 SISE Java语言程序 设计实用教程 第六讲 接口与内部类 SISE Java语言程序 设计实用教程 3 本章学习要点: q理解抽象类与接口 q理解内部类及其应用 q利用接口提供Java中多重继承的性质 SISE Java语言程序 设计实用教程 6.1 接口-抽象类 SISE Java语言程序 设计实用教程 抽象类 l 用abstract 修饰的类被称为抽象类。所谓抽象类就是没 有具体实例对象的类。 l 抽象类通常包括一个或多个抽象方法(只有方法说明, 没有方法体),抽象类的子类必须完成父类定义的每一 个抽象方法,除非该子类也是抽象类。 l 抽象类的主要用途是用来描述概念性的内容,这样可以 提高开发效率,更好地统一用户“接口”。 SISE Java语言程序 设计实用教程 定义一个抽象类 q abstract class 类名称 q q 成员变量; q 方法(); /定义一般方法 q abstract 方法(); /定义抽象方法 q q 说明:抽象类中可以包含有一般方法,也可以 包含有抽象方法;对于抽象方法不用完成其代码实 现,而在派生的子类中实现所有抽象方法。 SISE Java语言程序 设计实用教程 抽象类实现的例子 l 如前所述你可能对抽象类的概念有点模糊,下面举一 个具体实例来作说明。 l 假设想设计一个形状(shape)的父类CShape,由此类可 派生出圆形(circle),长方形(rectangle)于三角形 (triangle)等几何形状的类。则父类于子类的派生关 系描绘成如下图所示。 CShape类 CRectangle类 CCircle 类 CTriangle 类 SISE Java语言程序 设计实用教程 l 假设这些几何形状均具有“颜色”(color)这个属性,因此可以把 color这个数据成员,以及赋值color的方法均设计在父类里,让 它继承给各个形状的子类较为方便,如此就不用在每一个几何形 状的子类里,设计相同的程序代码来处理“颜色”这个属性的问 题。 l 另外,如果想为每一个几何形状的类设计一个area() 方法,用来 显示几何形状的面积,因每种几何形状的面积计算方式并不相同 ,所以把area() 方法的处理方式设计在父类里并不恰当,但每一 个由CShape父类所派生出的子类又都需要用到这一个方法,因此 可以在父类里只声明area() 方法,而把area() 方法处理的方法 留在子类里来定义,也就是说,把area() 声明成抽象方法即可解 决这个问题。根据上述的概念,可编写出如下的父类程序代码: 需求假设 SISE Java语言程序 设计实用教程 abstract class CShape /定义抽象类 protected String color; /数据成员 public void setColor(String str) color=str; /一般的方法,用来赋值几何形状的颜色 abstract void area();/抽象类内的抽象方法 定义抽象类 CShape SISE Java语言程序 设计实用教程 class CCircle extends CShape CShape double radius; /数据成员 public CCircle(double r) /构造函数 radius=r; public void area() System.out.print(“Color=“+color+”,”); System.out.print(“area=“+3.14*radius*radius); 在此处明确定义 area()的处理方法 抽象类CShape派生的子类CCricle SISE Java语言程序 设计实用教程 class CRectangle extends CShape int width,height; public CRectangle (int w,int h) width=w; height=h; public void area() System.out.print(“color=“+color+”, “); System.out.print(“area=“+width*height); 抽象类CShape派生的子类CRectangle SISE Java语言程序 设计实用教程 Public class app10-1 public static void main (String args) CRetangle rect=new CRectangle(5,10); rect.setColor(“yellow”); rect.area(); CCircle cir=new CCircle(2.0) cir.setColor(“Green”); cir.area(); 应用 SISE Java语言程序 设计实用教程 6.1 接口-接口 SISE Java语言程序 设计实用教程接口的使用接口的使用 l 接口(interface)是Java所提供的另一种重要功能, 它的结构和抽象类非常相似。接口本身也具有数据 成员与抽象方法,但它与抽象类有下列两点不同 q接口的数据成员必须初始化。 q接口里的方法必须全部都声明成abstract(默认),也就 是说,接口不能像抽象类一样保有一般的方法,而必须全 部是“抽象方法 l 为什么要使用接口? q类继承对于重用超类中的代码很有用,而Java只支持 单继承,在遇到需要多继承的情况,可以通过接口来帮助 实现。(多态性) q接口的方法可以不是继承链上的类中实现,从而为相互 没有关系的类能实现同样功能的一组方法提供一种有效手 段 SISE Java语言程序 设计实用教程 接口的定 义 public interface 接口名 extends 父接口名列表 /声明常量字段 publicstaticfinal 数据成员名=常量值; /声明抽象方法 publicabstract方法名(参数表); 特点: 1、接口的访问控制修饰符只有public。 2、接口类型也可以继承,并且可以多重继承,使用extends。但它与类中 的extends不同,它可以有多个父接口,各父接口间用逗号隔开 3、java的类层次结构中有一个顶级类Ojbect ,接口没有 4、接口体内只能声明常量字段和抽象方法:接口中的所有常量必须是 public static final,方法必须是public abstract,这是系统默认的,不管你 在定义接口时,写不写修饰符都是一样的 SISE Java语言程序 设计实用教程接口的实现 class 类名extends 父类名 implements 接口名表 类体 1、实现接口可以是某个类的子类,也可以是父类。 2、一个类可以“实现”多个接口功能,从而实现多继承,关 键词implements用于表示一个类实现若干接口,接口名之间 用逗号隔开。 3、“继承”后的类可以抽象类也可以是普通类,若实现接口 的类不是抽象类,则必须实现所有接口的所有方法,即为所 有的抽象方法定义方法体 4、类中实现方法时,必须使用与该抽象方法完全一样的名 字、返回类型和参数表,否则,就构成重载了,(见例6-3 ,P105) SISE Java语言程序 设计实用教程 6.2 内部类 SISE Java语言程序 设计实用教程 内部类 l 在一个类(称为”外部类”)里定义另一个类是完全 可以的,这称为“内部类”。使用内部类可以非常方 便地编写事件驱动程序,例如图形用户界面程序 l 内部类是一种非常有价值的特性,它能让你在逻辑 上将相互从属的类组织起来,并且在类的内部控制 访问权限。 l 内部类作为外部类的成员之一,可以直接访问外部 类的其他成员 l 外部类在其方法中,通过实例化内部类的一个对象 才能访问内部类的成员。 SISE Java语言程序 设计实用教程 l 在方法和作用域里的内部类 l 内部类可以被创建在方法内部,甚至是任意一个作用域里 。 q 两个理由: q 1、多重继承:无论外部类是否已经继承了某个接口的实 现,对于内部类都没有影响。如果没有内部类提供的可以 继承多个具体的或抽象的类的能力,一些设计与编程问题 就很难解决。从这个角度看,内部类使得多重继承的解决 方案变得完整。(见P109,例6-4) q 2、你要处理一个复杂的问题,需要一个类,但是又不想 让大家知道这个类 内部类的使用 SISE Java语言程序 设计实用教程 匿名内部类 l 匿名内部类就是没有名字的内部类 l 如果满足下面的一些条件,使用匿名内部类是比 较合适的: q 只用到类的一个实例 q 类在定义后马上用到 q 类非常小(SUN推荐是在4行代码以下) q 给类命名并不会导致你的代码更容易被理解 l 一个匿名内部类一定是在new的后面,用其隐含 实现一个接口或实现一个类(P111,例6-5) SISE Java语言程序 设计实用教程 6.3 项目案例 SISE Java语言程序 设计实用教程 会员管理系统登陆模块 l 网吧会员的上网注册、下网注销 l 可以计算上网的时间,据此结算上网费用,从 预存金额中扣除 SISE Java语言程序 设计实用教程 数据库设计 l 会员信息表memberTable memberID(会员编号):主键 password(密码) membername(会员名称) IDcardnum(会员卡号) leftmoney(预存余额) integral(积分) l 上网记录表record recordID(记录表示号):主键 logtime(登陆时间) logouttime(退出时间) timecount(所用时间) memberID(会员编号):外键 SISE Java语言程序 设计实用教程 JDBC概述 l ODBC存在一些缺点:不容易使用,没有面向对象的特性。 l JDBC(Java DataBase Connection) ,Java数据库连接。 Sun公司在1996年提出的一项技术,提供Java程序与数据库 系统通信的API,主要用于进行Java数据库程序开发。 l 有了JDBC API,不必为访问Sybase、Oracle数据库分别编 写一个专门的程序,只需用JDBC API写一个程序就够了, 它可做三件事情: 与数据库建立连接 发送SQL语句 处理结果 SISE Java语言程序 设计实用教程 网络库 l 数据库驱动程序需要解决应用程序与数据库的通信问题。早 期的数据库产品提供一个通过网络与数据库通信的网络库 (network libraries) l 网络库由运行于客户端的客户端组件和数据库服务器端的服 务器端组件组成。在Windows系统中是以DLL动态链接库形式 存在。缺点是每一种数据库有自己的一套API,开发出的程 序不能独立于数据库 l 数据库厂商后来提供一个建立在网络库之上的、统一的高层 API,开发人员调用高层API,从而避免与数据库产品紧密相 关的网络库 SISE Java语言程序 设计实用教程 JDBC驱动程序的分类(一) l类型1驱动程序:又称JDBC-ODBC桥驱动(Bridge),这类 驱动程序的特色是必须在使用者端的计算机上事先安装 好ODBC驱动程序,然后通过JDBC-ODBC的调用方法,进而 通过ODBC类存取数据库。 2.类型2驱动程序:这类驱动程序的特色是直接将应用程序 与网络库连接,必须在使用驱动程序的计算机上安装网络 库,在性能上优于类型1。 SISE Java语言程序 设计实用教程 JDBC驱动程序的分类(二) l类型3驱动程序:将运用程序与应用服务器(如Weblogic Server)连接,要求应用服务器将应用程序的JDBC调用 映射到适当的数据库驱动程序上。优点是客户机上不需 要安装网络库,如WebLogic的池驱动程序是一个类型3的 驱动程序 4.类型4驱动程序:把JDBC操作直接转换成不使用ODBC或本 机API的本机协议。这种驱动程序是完全用Java实现,不 需要其它驱动程序和客户端网络库。此类协议由数据库厂 家提供,能够实现自身数据的最优访问 SISE Java语言程序 设计实用教程JDBC驱动程序的选择 q 目前的四种不同类型JDBC驱动程序有着不一样的使用方法,所 以当我们在连接数据库之前,必须先依照需求选择一个适当的 驱动程序。 q 建议不使用桥接器型的驱动程序,这类型的驱动程序不是用纯 JAVA语言所开发,这使得程序的可移植性会变差,而且还需要 事先安装其它的特定驱动程序在使用者计算机上,非常麻烦。 反观类型三和类型四的驱动程序,不但使程序的可移植性提高 ,达到跨平台的目的,还省去在使用者计算机上安装其他驱动 程序的麻烦,可谓一举数得。所以当我们在为我们的数据库选 择驱动程序时,应尽量以类型三和类型四的JDBC驱动程序为主 ,而类型一和二则为次要的选择 SISE Java语言程序 设计实用教程JDBC应用的主要工作步骤 qJDBC主要包括以下类:连接(Connection)、语句 (Statement)和结果集(Resultset)。 qJDBC应用程序的工作步骤: q加载数据库的JDBC驱动程序(由DriverManager类 管理) q建立连接(Connection),由连接建立语句对象(三种 :Statement、PreparedStatement和 CallableStatement)以及结果集(ResultSet)对象 q通过语句对象和结果集对象进行各种数据操作,最 后关闭连接 SISE Java语言程序 设计实用教程 JDBC应用示例图( 见115表6-1,表6-2) SISE Java语言程序 设计实用教程通过JDBC连接数据库的 主要步骤(一) import java.sql.*;/核心API import javax.sql;/扩展的API 加载数据库驱动程序:使用Class.forName( “sun.jdbc.odbc.JdbcOdbcDriver”);其作用是要求 JVM查找并加载指定的JDBC驱动程序类,也就是 说JVM会执行该类的静态代码段 q 注意:在JDBC中,要求每种数据库驱动程序类 在静态初始化块(静态代码)中向DriverManager 注册自己。静态代码执行的时间是当class调入到内 存中就执行(你可以想像成,当类调用到内存后就 执行一个方法)。所以没有必
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 61850-10:2012/AMD1:2025 EN Amendment 1 - Communication networks and systems for power utility automation - Part 10: Conformance testing
- 陶瓷彩绘考试题及答案
- 电力考试试题及答案
- 国企工会面试题及答案
- 中医针灸毕业考试试题及答案
- 警校色觉测试题及答案
- 水果导购考试题及答案
- 校园信息化安全知识培训课件
- 金融精算考试题及答案
- 自然音程测试题及答案
- 2025小红书商业影像婚美行业峰会
- GB/T 45304-2025干欧芹
- 高考改革生物培训
- 2025年民生民情考试试题及答案
- 中外航海文化知到课后答案智慧树章节测试答案2025年春中国人民解放军海军大连舰艇学院
- 学校食堂保洁服务方案(技术标)
- 输血反应应急预案完整版课件
- 续贷款申请书范文
- 小孩上户口民族不一致委托书
- 2025年福建中闽能源股份有限公司招聘笔试参考题库含答案解析
- 科研项目管理质量承诺
评论
0/150
提交评论