资源预览内容
第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
第9页 / 共34页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
SISEJava语言程序 设计实用教程Java语言程序设计实用教程SISEJava语言程序 设计实用教程第六讲 接口与内部类SISEJava语言程序 设计实用教程3本章学习要点:q理解抽象类与接口 q理解内部类及其应用 q利用接口提供Java中多重继承的性质SISEJava语言程序 设计实用教程6.1 接口-抽象类SISEJava语言程序 设计实用教程抽象类l 用abstract 修饰的类被称为抽象类。所谓抽象类就是没有具体实例对象的类。l 抽象类通常包括一个或多个抽象方法(只有方法说明,没有方法体),抽象类的子类必须完成父类定义的每一个抽象方法,除非该子类也是抽象类。l 抽象类的主要用途是用来描述概念性的内容,这样可以提高开发效率,更好地统一用户“接口”。SISEJava语言程序 设计实用教程定义一个抽象类q abstract class 类名称q q 成员变量;q 方法(); /定义一般方法q abstract 方法(); /定义抽象方法q q 说明:抽象类中可以包含有一般方法,也可以包含有抽象方法;对于抽象方法不用完成其代码实现,而在派生的子类中实现所有抽象方法。 SISEJava语言程序 设计实用教程抽象类实现的例子l 如前所述你可能对抽象类的概念有点模糊,下面举一 个具体实例来作说明。l 假设想设计一个形状(shape)的父类CShape,由此类可 派生出圆形(circle),长方形(rectangle)于三角形 (triangle)等几何形状的类。则父类于子类的派生关 系描绘成如下图所示。CShape类CRectangle类CCircle 类CTriangle类SISEJava语言程序 设计实用教程l 假设这些几何形状均具有“颜色”(color)这个属性,因此可以把 color这个数据成员,以及赋值color的方法均设计在父类里,让 它继承给各个形状的子类较为方便,如此就不用在每一个几何形 状的子类里,设计相同的程序代码来处理“颜色”这个属性的问 题。l 另外,如果想为每一个几何形状的类设计一个area() 方法,用来 显示几何形状的面积,因每种几何形状的面积计算方式并不相同 ,所以把area() 方法的处理方式设计在父类里并不恰当,但每一 个由CShape父类所派生出的子类又都需要用到这一个方法,因此 可以在父类里只声明area() 方法,而把area() 方法处理的方法 留在子类里来定义,也就是说,把area() 声明成抽象方法即可解 决这个问题。根据上述的概念,可编写出如下的父类程序代码:需求假设SISEJava语言程序 设计实用教程abstract class CShape /定义抽象类 protected String color; /数据成员public void setColor(String str)color=str; /一般的方法,用来赋值几何形状的颜色abstract void area();/抽象类内的抽象方法 定义抽象类 CShapeSISEJava语言程序 设计实用教程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派生的子类CCricleSISEJava语言程序 设计实用教程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派生的子类CRectangleSISEJava语言程序 设计实用教程Public class app10-1public 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(); 应用SISEJava语言程序 设计实用教程6.1 接口-接口SISEJava语言程序 设计实用教程接口的使用接口的使用l 接口(interface)是Java所提供的另一种重要功能,它的结构和抽象类非常相似。接口本身也具有数据 成员与抽象方法,但它与抽象类有下列两点不同 q接口的数据成员必须初始化。q接口里的方法必须全部都声明成abstract(默认),也就是说,接口不能像抽象类一样保有一般的方法,而必须全 部是“抽象方法 l 为什么要使用接口?q类继承对于重用超类中的代码很有用,而Java只支持单继承,在遇到需要多继承的情况,可以通过接口来帮助 实现。(多态性)q接口的方法可以不是继承链上的类中实现,从而为相互没有关系的类能实现同样功能的一组方法提供一种有效手 段SISEJava语言程序 设计实用教程接口的定 义public interface 接口名 extends 父接口名列表 /声明常量字段 publicstaticfinal 数据成员名=常量值; /声明抽象方法 publicabstract方法名(参数表); 特点: 1、接口的访问控制修饰符只有public。 2、接口类型也可以继承,并且可以多重继承,使用extends。但它与类中 的extends不同,它可以有多个父接口,各父接口间用逗号隔开 3、java的类层次结构中有一个顶级类Ojbect ,接口没有 4、接口体内只能声明常量字段和抽象方法:接口中的所有常量必须是 public static final,方法必须是public abstract,这是系统默认的,不管你 在定义接口时,写不写修饰符都是一样的SISEJava语言程序 设计实用教程接口的实现class 类名extends 父类名 implements 接口名表 类体 1、实现接口可以是某个类的子类,也可以是父类。 2、一个类可以“实现”多个接口功能,从而实现多继承,关 键词implements用于表示一个类实现若干接口,接口名之间 用逗号隔开。 3、“继承”后的类可以抽象类也可以是普通类,若实现接口 的类不是抽象类,则必须实现所有接口的所有方法,即为所 有的抽象方法定义方法体 4、类中实现方法时,必须使用与该抽象方法完全一样的名 字、返回类型和参数表,否则,就构成重载了,(见例6-3 ,P105)SISEJava语言程序 设计实用教程6.2 内部类SISEJava语言程序 设计实用教程内部类l 在一个类(称为”外部类”)里定义另一个类是完全 可以的,这称为“内部类”。使用内部类可以非常方便地编写事件驱动程序,例如图形用户界面程序l 内部类是一种非常有价值的特性,它能让你在逻辑 上将相互从属的类组织起来,并且在类的内部控制 访问权限。l 内部类作为外部类的成员之一,可以直接访问外部 类的其他成员l 外部类在其方法中,通过实例化内部类的一个对象 才能访问内部类的成员。SISEJava语言程序 设计实用教程l 在方法和作用域里的内部类l 内部类可以被创建在方法内部,甚至是任意一个作用域里 。q 两个理由:q 1、多重继承:无论外部类是否已经继承了某个接口的实现,对于内部类都没有影响。如果没有内部类提供的可以 继承多个具体的或抽象的类的能力,一些设计与编程问题 就很难解决。从这个角度看,内部类使得多重继承的解决 方案变得完整。(见P109,例6-4)q 2、你要处理一个复杂的问题,需要一个类,但是又不想让大家知道这个类内部类的使用SISEJava语言程序 设计实用教程匿名内部类l 匿名内部类就是没有名字的内部类l 如果满足下面的一些条件,使用匿名内部类是比 较合适的:q 只用到类的一个实例q 类在定义后马上用到q 类非常小(SUN推荐是在4行代码以下)q 给类命名并不会导致你的代码更容易被理解l 一个匿名内部类一定是在new的后面,用其隐含 实现一个接口或实现一个类(P111,例6-5)SISEJava语言程序 设计实用教程6.3 项目案例SISEJava语言程序 设计实用教程会员管理系统登陆模块l 网吧会员的上网注册、下网注销l 可以计算上网的时间,据此结算上网费用,从预存金额中扣除SISEJava语言程序 设计实用教程数据库设计l 会员信息表memberTablememberID(会员编号):主键password(密码)membername(会员名称)IDcardnum(会员卡号)leftmoney(预存余额)integral(积分)l 上网记录表recordrecordID(记录表示号):主键logtime(登陆时间)logouttime(退出时间)timecount(所用时间)memberID(会员编号):外键SISEJava语言程序 设计实用教程JDBC概述l ODBC存在一些缺点:不容易使用,没有面向对象的特性。l JDBC(Java DataBase Connection) ,Java数据库连接。Sun公司在1996年提出的一项技术,提供Java程序与数据库系统通信的API,主要用于进行Java数据库程序开发。l 有了JDBC API,不必为访问Sybase、Oracle数据库分别编写一个专门的程序,只需用JDBC API写一个程序就够了,它可做三件事情: 与数据库建立连接 发送SQL语句 处理结果SISEJava语言程序 设计实用教程网络库l 数据库驱动程序需要解决应用程序与数据库的通信问题。早期的数据库产品提供一个通过网络与数据库通信的网络库(network libraries)l 网络库由运行于客户端的客户端组件和数据库服务器端的服务器端组件组成。在Windows系统中是以DLL动态链接库形式存在。缺点是每一种数据库有自己的一套API,开发出的程序不能独立于数据库l 数据库厂商后来提供一个建立在网络库之上的、统一的高层API,开发人员调用高层API,从而避免与数据库产品紧密相关的网络库SISEJava语言程序 设计实用教程JDBC驱动程序的分类(一)l类型1驱动程序:又称JDBC-ODBC桥驱动(Bridge),这类驱动程序的特色是必须在使用者端的计算机上事先安装好ODBC驱动程序,然后通过JDBC-ODBC的调用方法,进而通过ODBC类存取数据库。2.类型2驱动程序:这类驱动程序的特色是直接将应用程序与网络库连接,必须在使用驱动程序的计算机上安装网络库,在性能上优于类型1。SISEJava语言程序 设计实用教程JDBC驱动程序的分类(二)l类型3驱动程序:将运用程序与应用服务器(如Weblogic Server)连接,要求应用服务器将应用程序的JDBC调用 映射到适当的数据库驱动程序上。优点是客户机上不需 要安装网络库,如WebLogic的池驱动程序是一个类型3的 驱动程序4.类型4驱动程序:把JDBC操作直接转换成不使用ODBC或本 机API的本机协议。这种驱动程序是完全用Java实
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号