Java接口是一个强大的工具,从另一个更加安全和方便的角度解决了在java中无法继承多个类的需求。在C++中虽然可以多重继承,但是不可避免的会存在菱形继承或者其他问题。虽然C++也是利用了其他方式可以避免和解决多重继承出现的问题,让我们还是可以使用多重继承,但是很多方面肯定会有不同程度的限制。最主要的时候如果项目比较庞大的话,你使用了多重继承而且你没有采取有效措施,那就很难调试和定位问题。
那Java在接口在设计中其和普通的类或者抽象类有什么不同那,接口中的方法和成员变量与普通类有什么不同的吗,或者说它可以定义成员变量吗,需要定义成员变量吗。这里我们将对以上问题进行一个整体的总结。
1:接口和普通类差别很明显,我们就不再说了,接口和抽象类的区别如下:
a:接口本身可以继承多个接口,但是抽象类因为其本身其实也是一种类,所以只能继承一个类。这时候有人会问,如果接口中存在多个相同方法,这时候一个接口继承多个接口会导致什么情况。答案是不会影响实际场景的使用,但是还是在某些方面会有相应限制,这会在下面细谈。例子:
interface One{
public void outStr();//同名方法
}
interface Two{
public void outStr();//同名方法
public void outStr1();
}
interface Three extends One, Two{
}
//具体实现
class Impl implements Three{
public void outStr1() {
System.out.println("outStr1");
}
public void outStr() {
System.out.println("outStr"