接口和包 什么是接口:我们可以把接口理解成一种特殊的类型,它完全是由常量和抽象方法组成。(注意和抽象类的区别);格式:interface { [(
); ]* [ = ; ]*} // []* -- 0 or many times说明:方法: 只允许抽象方法,即只声明,而不实现。
其访问限定符是 public?变量: 访问限定符是 static, final (constants)?需要说明的是:1 接口类型中不能包含构造函数;2 接口类型可以用来声明一个变量;通过引入接口的定义,我们:1 实现多重继承;2 使无关的类具有某些相同的行为; 但是,接口毕竟只是一个抽象的类型。
在我们定义了接口之后,必须还要实现它,接口才真正发挥了作用。使用接口的格式就是class [implements ]这里还要做一些必要的说明:1 实现接口的方法必须使public2 接口中的变量在实现接口的类中,被视为常量。3 一个类可以实现多个接口;对应的,一个接口可以被多个类实现;4 如果一个类在声明的时候指明要显现某个接口,但在类中又没有给出接口方法的实例,那么,这个类是抽象类;5 如果一个实现了多个接口,而这些接口中有相同的方法定义,那么,这个类对方法的实现是被这些接口共同使用的。
接口之间也可以存在继承的关系,如:interface extends 可以参照类的类的继承来理解。但与类不同的是,接口可以extends多个基类接口; 为了把这些概念弄的更明白,我们用表格来比较一下:名称抽象类接口继承单一继承关系,只能和一个类存在单向派生关系支持多重继承。
一个类可以实现多个接口成员可以包含方法实现;静态方法,protected 成员变量只能有public的方法声明和常量关系可以实现多个接口可以别多个类所实现实例---一个被声明为接口类型的变量可以指向任何实现它的类的对象实例 包:概念:包(package)是一组相关的类和接口的集合,引入包的概念的目的在于:1 分离和重用名称空间(想想namespace的概念?)2 控制成员的访问(回忆一下public,protected , private)。