2014年1月26日星期日

Java 学习笔记--接口与内部类

接口(Interface):
接口并不是类,而是对类的一种需求的描述,而在类的方法,在实现Implement的时候都是要实现接口里面的方法。

在接口可以实现的:
(1) 包含一个或者多个方法

接口不可以实现的:
(1)在接口里面实现方法。
(2) 不能写入实例

接口的一些特性:
(1)接口不是类,不能使用new去实例化一个接口。
例如 对于object money 来说,不能Money money= new Money();
(2) 可以声明接口变量,接口变量必须引用了实现接口的类对象。
(3)接口可以接入接口(Interface 可以被Interface 接入)
 e.g public interface Moveable {
      void move(double x, double y);
}
      public interface Powered extends Moveable {
      double milePerGallon();
}

(4)接口中的方法将会被自动标记为public
(5)一个类,可以同时实现两个接口:
例如 Class Empolyee implements Cloneable, Comparable;

抽象类和接口的分别:
抽象类只能扩展一次,而接口可以被多次的扩展
在abstract class方式中,Demo可以有自己的数据成员,也可以有非 abstract的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final 的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的 abstract class。

这种实现方式基本上能够明确的反映出我们对于问题领域的理解,正确的揭示我们的设计意图。其 实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系,大家在选择时可以作为一个依据,当然这是建立在对问题领域的理解上的,比如:如果我们认为AlarmDoor在概念本质上是报警器,同时又具有Door的功能,那么上述的定义方式就要反过来了。

接口和继承的分别:
接口的类要执行(implement)接口所有的方法,但是可以写自己的新参数和方法。而继承是继承所有的非private 的方法和参数,并且可以有自己的新方法和参数,但是如果要修改父类的方法,则是要重写(override)。


没有评论:

发表评论