(接口,抽象类 VS 接口)
接口
- 接口可以理解为对一组方法声明进行的统一命名,但这些于方法没有提供任何实现。也就是说。,把一组方法声明放在在一个接口中,然后继承该接口的类都需要实现这些方法
- 通过接口,你可以对方法进行同一管理,继承接口的类只需实现这些方法就可以了。
接口的作用
-
可以实现不同类的相同行为,不需要考虑类之间的层次关系;
-
可以指明多个类需要实现的方法;
-
可以使处于不同层次甚至互不相关的类具有相同的行为。
-
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到多重继承的效果。
-
接口(interface)是抽象方法和常量值的定义的集合。
-
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
-
实现接口类:
class SubClass implements InterfaceA{ } -
一个类可以实现多个接口,接口也可以继承其它接口。
接口的特点:
- 用interface来定义。
- 接口中的所有成员变量都默认是由public static final修饰的。
- 接口中的所有方法都默认是由public abstract修饰的。
- 接口没有构造器。
- 接口采用多继承机制。
如何定义接口
在java中定义类使用关键字class,定义接口使用关键字interface
public abstract interface Traffic {
int A = 10;
void run();
}
如何实现接口
在java中继承类使用关键字extends,实现接口使用关键字implements
class ComparableCircle implements CompareObject{
}
接口与接口之间是继成关系,使用extends关键字,而且接口可以多继承
interface InterfaceA extends InterfaceB {
}
抽象类 VS 接口
相同点:
- 接口和抽象类都不能被实例化。只能被其他类实现和继承。
- 接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。
不同点:
- 抽象类与接口定义不同:抽象类abstract class ,接口 interface
- 接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。
- 接口里不能定义静态方法;抽象类可以定义静态方法
- 接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量
- 接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。
- 接口不包含初始化块,但抽象类可以包含初始化块
- 一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足