Java语言程序设计实用教程第六讲接口与内部类

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

接口的定义
[public] interface 接口名 extends 父接口名列表 父接口名列表{ //声明常量字段 声明常量字段 [public][static][final]<类型 数据成员名 常量值 类型> 常量值; 类型 数据成员名=常量值 //声明抽象方法 声明抽象方法 [public][abstract]<返回类型 方法名 参数表 返回类型>方法名 参数表); 返回类型 方法名(参数表 }
Java语言程序 设计实用教程 SISE
接口的实现
<访问控制修饰符 修饰符 访问控制修饰符><修饰符 类名[extends 父类名 父类名] 访问控制修饰符 修饰符>class 类名 implements 接口名表 接口名表{ 类体 }
1、实现接口可以是某个类的子类,也可以是父类。 2、一个类可以“实现”多个接口功能,从而实现多继承 多继承, 多继承 关键词implements用于表示一个类实现若干接口,接口名之 间用逗号隔开。 3、“继承”后的类可以抽象类也可以是普通类,若实现接 口的类不是抽象类,则必须实现所有接口的所有方法,即为 所有的抽象方法定义方法体 4、类中实现方法时,必须使用与该抽象方法完全一样的名 字、返回类型和参数表,否则,就构成重载了,(见例6-3, P105)
Java语言程序 设计实用教程 SISE
匿名内部类
匿名内部类就是没有名字的内部类 如果满足下面的一些条件,使用匿名内部类是比较 合适的:
只用到类的一个实例 类在定义后马上用到 类非常小(SUN推荐是在4行代码以下) 给类命名并不会导致你的代码更容易被理解
一个匿名内部类一定是在new的后面,用其隐含实 现一个接口或实现一个类(P111,例6-5)
Java语言程序 设计实用教程 SISE
抽象类实现的例子
如前所述你可能对抽象类的概念有点模糊,下面举 一个具体实例来作说明。 假设想设计一个形状(shape)的父类CShape,由此类 可派生出圆形(circle),长方形(rectangle)于三角 形(triangle)等几何形状的类。则父类于子类的派 生关系描绘成如下图所示。 CShape类
上网记录表record
– recordID(记录表示号):主键 – logtime(登陆时间) – logouttime(退出时间) – timecount(所用时间) – memberID(会员编号):外键
Java语言程序 设计实用教程 SISE
JDBC概述
ODBC存在一些缺点:不容易使用,没有面向对象的特性。 JDBC(Java DataBase Connection) ,Java数据库连接。 Sun公司在1996年提出的一项技术,提供Java程序与数据库 系统通信的API,主要用于进行Java数据库程序开发。 有了JDBC API,不必为访问Sybase、Oracle数据库分别编 写一个专门的程序,只需用JDBC API写一个程序就够了, 它可做三件事情: – 与数据库建立连接 – 发送SQL语句 – 处理结果
特点: : 1、接口的访问控制修饰符只有public。 2、接口类型也可以继承,并且可以多重继承,使用extends。但它与类中 。 的extends不同,它可以有多个父接口,各父接口间用逗号隔开 3、java的类层次结构中有一个顶级类Ojbect ,接口没有 4、接口体内只能声明常量字段和抽象方法:接口中的所有常量必须是 public static final,方法必须是public abstract,这是系统默认的,不管你 在定义接口时,写不写修饰符都是一样的
Java语言程序 设计实用教程 SISE
6.3 项目案例
Java语言程序 设计实用教程 SISE
会员管理系统登陆模块
网吧会员的上网注册、下网注销 可以计算上网的时间,据此结算上网费用,从 预存金额中扣除
Java语言程序 设计实用教程 SISE
数据库设计
会员信息表memberTable
– memberID(会员编号):主键 – password(密码) – membername(会员名称) – IDcardnum(会员卡号) – leftmoney(预存余额) – integral(积分)
为什么要使用接口?
类继承对于重用超类中的代码很有用,而Java只支持单继 承,在遇到需要多继承的情况,可以通过接口来帮助实现。 (多态性) 接口的方法可以不是继承链上的类中实现,从而为相互没有 接口的方法可以不是继承链上的类中实现 从而为相互没有 关系的类能实现同样功能的一组方法提供一种有效手段
Java语言程序 设计实用教程 SISE
6.1 接口-抽象类
Java语言程序 设计实用教程 SISE
抽象类
修饰的类被称为抽象类 所谓抽象类 抽象类。 抽象类就是没 用abstract 修饰的类被称为抽象类。所谓抽象类就是没 实例对象的类 有具体实例对象的类。 有具体实例对象的类。 抽象类通常包括一个或多个抽象方法(只有方法说明, 抽象类通常包括一个或多个抽象方法(只有方法说明,没 有方法体),抽象类的子类必须完成父类定义的每一个抽 有方法体),抽象类的子类必须完成父类定义的每一个抽 ), 象方法,除非该子类也是抽象类。 象方法,除非该子类也是抽象类。 抽象类的主要用途是用来描述概念性的内容, 抽象类的主要用途是用来描述概念性的内容,这样可以提 概念性的内容 高开发效率,更好地统一用户“接口” 高开发效率,更好地统一用户“接口”。
Java语言程序 设计实用教程 SISE
6.1 接口-接口
Java语言程序 设计实用教程 SISE
接口的使用
接口(interface)是Java所提供的另一种重要功能,它 的结构和抽象类非常相似。接口本身也具有数据成 员与抽象方法,但它与抽象类有下列两点不同
接口的数据成员必须初始化。 接口里的方法必须全部都声明成abstract(默认 默认),也就是说, 默认 接口不能像抽象类一样保有一般的方法,而必须全部是 “抽象方法
Java语言程序 设计实用教程 SISE
Java语言程序设计实用教程
Java语言程序 设计实用教程 SISE
第六讲 接口与内部类
Java语言程序 设计实用教程 SISE
本章学习要点:
理解抽象类与接口 理解内部类及其应用 利用接口提供Java中多重继承的性质
3
Java语言程序 设计实用教程 SISE
另外,如果想为每一个几何形状的类设计一个area() 方法,用 另外,如果想为每一个几何形状的类设计一个area() 方法, 来显示几何形状的面积, 来显示几何形状的面积,因每种几何形状的面积计算方式并不 相同,所以把area() 方法的处理方式设计在父类里并不恰当, 相同,所以把area() 方法的处理方式设计在父类里并不恰当, 但每一个由CShape CShape父类所派生出的子类又都需要用到这一个方 但每一个由CShape父类所派生出的子类又都需要用到这一个方 因此可以在父类里只声明area() 方法,而把area() 法,因此可以在父类里只声明area() 方法,而把area() 方法 处理的方法留在子类里来定义,也就是说, 处理的方法留在子类里来定义,也就是说,把area() 声明成抽 象方法即可解决这个问题。根据上述的概念, 象方法即可解决这个问题。根据上述的概念,可编写出如下的 父类程序代码: 父类程序代码:
Java语言程序 设计实用教程 SISE
抽象类CShape派生的子类 抽象类 派生的子类CCricle 派生的子类
class CCircle extends CShape CShape { double radius; //数据成员 public CCircle(double r) //构造函数 { radius=r; } 在此处明确定义 public void area() area()的处理方法 { System.out.print(“Color=“+color+”,”); System.out.print(“area=“+3.14*radius*radius); } }
Java语言程序 设计实用教程 SISE
抽象类CShape派生的子类 派生的子类CRectangle 抽象类 派生的子类
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); } }
Java语言程序 设计实用教程 SISE
内部类的使用
在方法和作用域里的内部类 内部类可以被创建在方法内部,甚至是任意一个作用域里。 两个理由: 1、多重继承:无论外部类是否已经继承了某个接口的实现, 对于内部类都没有影响。如果没有内部类提供的可以继承 多个具体的或抽象的类的能力,一些设计与编程问题就很 难解决。从这个角度看,内部类使得多重继承的解决方案 变得完整。(见P109,例6-4) 2、你要处理一个复杂的问题,需要一个类,但是又不想让 大家知道这个类
Java语言程序 设计实用教程 SISE
定义一个抽象类
abstract class 类名称 { 成员变量; 方法(); abstract 方法(); } 说明:抽象类中可以包含有一般方法,也可以包 含有抽象方法;对于抽象方法不用完成其代码实现, 而在派生的子类中实现所有抽象方法。 //定义一般方法 //定义抽象方法
百度文库
Java语言程序 设计实用教程 SISE
6.2 内部类
Java语言程序 设计实用教程 SISE
内部类
在一个类(称为”外部类” 里定义另一个类 在一个类(称为”外部类”)里定义另一个类是完 全可以的,这称为“内部类”。使用内部类可以非常 “内部类” 方便地编写事件驱动程序,例如图形用户界面程序 编写事件驱动程序, 编写事件驱动程序 内部类是一种非常有价值的特性,它能让你在逻辑上 将相互从属的类组织起来,并且在类的内部控制访问 权限。 内部类作为外部类的成员之一,可以直接访问外部类 的其他成员 外部类在其方法中,通过实例化内部类的一个对象才 能访问内部类的成员。
Java语言程序 设计实用教程 SISE
定义抽象类 CShape
abstract class CShape //定义抽象类 //定义抽象类 { //数据成员 protected String color; //数据成员 public void setColor(String str) { color=str; //一般的方法,用来赋值几何形状的颜色 //一般的方法, 一般的方法 } ();//抽象类内的抽象方法 abstract void area();//抽象类内的抽象方法 ();// }
CRectangle类
CCircle 类
CTriangle 类
Java语言程序 设计实用教程 SISE
需求假设
假设这些几何形状均具有“颜色”(color)这个属性, 假设这些几何形状均具有“颜色”(color)这个属性,因此可以 这个属性 color这个数据成员 以及赋值color的方法均设计在父类里, 这个数据成员, color的方法均设计在父类里 把color这个数据成员,以及赋值color的方法均设计在父类里, 让它继承给各个形状的子类较为方便, 让它继承给各个形状的子类较为方便,如此就不用在每一个几 何形状的子类里,设计相同的程序代码来处理“颜色” 何形状的子类里,设计相同的程序代码来处理“颜色”这个属 性的问题。 性的问题。
Java语言程序 设计实用教程 SISE
应用
app10Public 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(); } }
相关文档
最新文档