接口的出现和使用更加体现了Java语言的面向对象特征,它不同于抽象类
一个类只能继承一个父类,但却可以实现多个接口,为什么会是这样?
现在我们假设一个类可以继承多个多个类,代码如下:
//父类1
public class Father1
{
public void show()
{
System.out.println("父类1中的show方法");
}
}
//父类2
public class Father1
{
public void show()
{
System.out.println("父类2中的show方法");
}
}
现在我们定义一个子类,并同时继承以上两个父类
class Son extends Father1,Father2
{
}
在程序的main方法中我们实例化一个Son对象,并调用Son对象父类的show()方法
public static void main(String[] args)
{
Son son=new Son();
son.show();
}
接下来问题就会出现了,son.show()究竟是哪个父类的方法??
这就在方法调用上产生了矛盾,Java为了屏蔽到这个问题,就自然定义了类的单继承规则。
那么,为什么类可以多实现呢?
同样,我们仿照上面的例子重新用接口实现,代码如下:
interface Father1
{
void show();
}
interface Father2
{
void show();
}
在定义一个子类同时实现两个接口
class son implements Father1,Father2
{
void show()
{
........
}
}
这时候,在main方法中实例化Son对象并调用show()方法:
public static void main(String[] args)
{
Son son=new Son();
son.show();
}
这时候的show方法是并不冲突的,虽然Father1和Father2接口都定义了这个方法,但是由于接口中的方法不具体,也就是没有方法体
所以接口中方法的使用需要在实现了该接口的子类中重写才能实现该方法
所以此时son.show()方法实际是使用了重写后的Son类中的方法,并没有产生方法调用的冲突。