一、接口:
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
/*
接口的由来。
*/
abstract class Demo
{
abstract void show1();
abstract void show2();
}
/*
抽象类中可包含抽象方法和非抽象方法。
当一个类中只有抽象方法时,便可以把这个类定义成接口。用关键字interface定义。
*/
对于接口中常见的成员:而且这些成员都有固定的修饰符。
1、全局常量:publlic static final
2、抽象方法: public abstract
由此得出结论,接口中的成员的都是公共的权限。
interface Demo
{
public static final int num=4;
public abstract void show1();
public abstract void show2();
}
类与类之间是继承关系,而接口与类之间是实现关系。接口与接口之间是继承关系。
接口不可以实例化。
只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。否则该子类还是抽象类。
interface Demo
{
public abstract void show1();
public abstract void show2();
}
class DemoImpl implements Demo
{
public void show1()
{
}
public void show2()
{
}
}
二、多继承
在java中不直接支持多继承,因为会出现调用的不确定性。
所以java将多继承机制进行改良,在java中变成了多实现。
一个类可以实现多个接口。
interface A
{
public void show();
}
interface Z
{
public int add(int a,int b);
}
class Test implements A,Z//多实现
{
public int add(int a,int b)
{
return a+b+3;
}
/**/
public void show(){}
}
一个类在继承另一个类的同时,还可以实现多个接口。
class Q
{
public void method()
{}
}
abstract class Test2 extends Q implements A,Z
{
......
}
接口的出现避免了单继承的局限性扩展了子类的功能。
interface CC
{
void show();
}
interface MM
{
void method();
}
interface QQ extends CC,MM//接口与接口之间是继承关系,而且接口可以多继承。
{
void function();
}
class WW implements QQ
{
//覆盖3个方法。
public void show(){}
public void method(){}
public void function(){}
}
接口和抽象类的异同点
同:都是通过不断的向上抽取而来的。
异:
1、抽象类是需要被继承的,而且只能单继承。
接口需要被实现,Java可以通过多实现的方式来实现多继承。
2、抽象类中可以定义抽象方法,也可以定义非抽象方法。子类继承父类以后,可以直接使用非抽象方法。
接口中只能定义抽象方法,接口只能被实现。
3、抽象类的继承是 is a 的关系。在定义该体系中的共性内容。
接口的实现是 like a 的关系。在定义体系的额外,扩展体系的功能。
详情见知乎: