动力节点教程:Java接口作用及意义
Java接口是整个Java语言中重要的组成部分,Java接口实际上是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。由此看来,Java接口的存在是意义非凡的,本文我们就一起来讨论Java接口作用及意义。
从某种程度上来说,Java接口作用及意义可以分为以下几点:
1、重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。
2、简单、规范性:如果一个项目比较庞大,那么就需要一个能理清所有业务的架构师来定义一些主要的接口,这些接口不仅告诉开发人员你需要实现那些业务,而且也将命名规范限制住了(防止一些开发人员随便命名导致别的程序员无法看明白)。
3、维护、拓展性:比如你要做一个画板程序,其中里面有一个面板类,主要负责绘画功能,然后你就这样定义了这个类,可是在不久将来,你突然发现这个类满足不了你了,然后你又要重新设计这个类,更糟糕是你可能要放弃这个类,那么其他地方可能有引用他,这样修改起来很麻烦,如果你一开始定义一个接口,把绘制功能放在接口里,然后定义类时实现这个接口,然后你只要用这个接口去引用实现它的类就行了,以后要换的话只不过是引用另一个类而已,这样就达到维护、拓展的方便性。
4、安全、严密性:接口是实现软件松耦合的重要手段,它描叙了系统对外的所有服务,而不涉及任何具体的实现细节。这样就比较安全、严密一些(一般软件服务商考虑的比较多)。
但我们如果更深入的探讨Java接口存在的意义,我们就会发现,Java接口的存在实际上是为了禁止直接为其实例化对象和打破单继承局限即实现伪多重继承。这对整个Java语言来说都是有着重大意义的。
1.禁止直接为其实例化对象
在这个点上,相比于抽象类,Java 对接口的限制更加严格了,因为接口连构造方法都没有,所以,根本不可能为其实例化对象。
//源码
public interface Move {
//此时编译器会提示 Interfaces cannot have constructors 错误信息
public Move(){}
void move();
}
2.打破单继承局限(实现伪多重继承)
不支持多重继承是Java的特性,但是Java可以实现多个接口,这个在某种程度上可以看做进行多重继承的一种办法。所以,一个类在实现了多个接口之后,就可以上转型为多个接口,即打破单继承局限。
//源码
public interface Fly {
void fly();
}
public interface Fight {
void fight();
}
public class SuperMan implements Fly,Fight{
@Override
public void fight() {
System.out.println("SuperMan fight");
}
@Override
public void fly() {
System.out.println("SuperMan fly");
}
}
public class MultiImplementsTest {
public static void main(String[] args) {
SuperMan sm = new SuperMan();
fly(sm);
fight(sm);
}
private static void fly(Fly f){
f.fly();
}
private static void fight(Fight f){
f.fight();
}
}
//执行结果
SuperMan fly
SuperMan fight
由于 SuperMan 实现了 Fly 和 Fight 接口,所以 SuperMan 可以上转型为 Fly 接口,也可以上转型为 Fight 接口,即另类的“多重继承”。
综上所述,Java接口作用及意义主要还是在于打破Java自身单继承的枷锁,同时也能防止接口自身实例化对象,正如本文中的第一点所讲的那样,正是Java接口这一机制的存在,才赋予了Java强大的面向对象能力。我们讲了这么多,实际上对于Java接口作用及意义应该有所了解和掌握吧,但java接口的相关知识点我们才刚刚起步,学习Java接口,任重而道远,怎可没有动力节点的陪伴?观看本站的Java基础教程,动力节点陪你一起学Java!