- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[经济学]第5章 接口与内部类
第5章 接口与内部类 Java中的接口是Java灵活性的基石,主要用来描述类可以具有什么样的功能,但并不给出每个功能的具体实现。 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员,是依附于外部类而存在的。在编写图形类接口的时候,内部类有助于写出专业高效的代码。 接口问题的提出 交通工具的类层次结构 问题的提出 在陆地、海上、空中三类交通工具中都有以汽油为动力的燃料的子类,它们都有相同的属性和方法:每公里耗油量、剩余油量、加油操作、获取剩余油量操作等。为使程序简洁不重复,可以把这些燃油交通工具的公共属性放在它们的共同父类中,由各个子类加以继承。可自行车等也同样继承下了没用的属性和方法,造成子类成员的膨胀、庞杂,难以管理和掌握。 把用于完成特定功能的若干属性组织成相对独立的属性集合:凡是需要实现这种特定功能的类,都可以继承这个属性集合并在类内使用它,这种属性集合就是接口。 利用接口,Java程序也可以实现类似于多重继承的网状层次结构。 5.1 接口的特性 Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征,没有方法的实现。因此,这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为或者功能。 在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及抛出的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载关系。但在Java编译器检查方法的置换时,则会进一步检查返回类型和抛出的异常是否相同。 接口与类比较,有其特殊性。接口可以定义多继承; 接口允许没有父接口,即接口不存在最高层,与类的最高层为object类是不同的; 接口的方法只能被声明为public和abstract,如果不声明,则默认为public abstract;接口中的成员变量只能用public、static和final来定义,如果不声明,则默认为public static final。 接口中的方法都是使用abstract修饰的方法。在接口中只给出方法名、返回值和参数表,而不能定义方法体。 接口的功能实现是在“继承”了这个接口的各个类中完成的,由这些类来具体定义接口中所有抽象方法的方法体。通常把对接口的“继承”称为“实现”。 5.2 接口的定义 当定义一个接口时,实际上是在编写一个合约,该合约规定了用来描述实现该接口的类能够做什么,能够充当什么样的角色。而接口中并没有功能的具体实现,具体实现由签了合约的类自己来完成,但实现时必须满足接口中的要求。 例如,可以编写一个接口aerocraft,代表飞行器的角色。在该接口中定义了飞行器起飞方法。这样,具有飞行器功能的所有类都可以实现该接口,并具体实现接口中的方法,不同的类可以有不同的方法实现。 接口的定义形式: [访问权限] [abstract] interface 接口名 [extends 父接口名1,父接口名2,……] { …//接口体程序 } 说明: 访问权限:只有public和缺省状态二种; abstract 可省略 接口由接口首部和接口体构成。 接口首部:给出接口名; extends可指定继承多个父接口; 接口体:说明一组方法首部、声明一些常量; interface Aerocraft{} interface Jet{} interface JetPlane extends Aerocraft,Jet 5.3 接口的实现 5.3.1 接口实现的基本语法 基本语法: class 类名 implements 接口名列表 举例: public interface Employee{ } public interface Manager{ } public class Person implements Employee, Manager 接口的实现 例:声明一个接口: public interface Range{ int MIN=0; int getMaxRange(); void setMaxRange(int value); } public class MyApplet extends Applet implements Range , MouseListener { …… } 一个类只能有一个父类,但是它可以同时实现若干个接口。如果把接口理解成特殊的类,那么这个类利用接口实际上就获得了多个父类,即实现了多继承。 instanceof 运算符可用来判断一个对象的类是否实现了某个接口。 接口的实现要注意下列问题 在类的声明部分,用implements关键字
文档评论(0)