接口到底是个什么玩意

接口存在的意义:

  一直对java中接口的作用不是太明了。虽说一个类可以implements多个接口,但接口本身只是定义了几个方法,没有任何实际的意义,具体的实现还是要在实现它的类中进行。这样的话,接口还有什么意义呢?

  举个例子来说,现有

public interface I{
    method1(){};
}

class A implements I{
    method1()
{

  这样写和不实现接口,直接将method1作为class A的方法有什么区别呢?

  即:

class A{
    method1()
{

  能不能具体举个例子来说明它们在使用上的区别呢?

  回答:

  接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你想用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.method1();是吧?那样我new a();就是用a的方法,new b()就是用b的方法

  这样不方便吗?

  这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同

  我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了.你这样想,我做一个USB接口,有个read()抽象方法,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了。

**********************************************************************************************************************

接口的引入:

  当一个抽象类中的所有方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,这就是接口,关键字interface.

格式:

interface Demo{
  public static final int NUM = 3;
	public abstract void show1();
	public abstract void show2();
}

  对于接口当中常见的成员:(而且这些成员都有固定的修饰符)

  1.全局常量:public static final

  2.抽象方法:public abstract

  由此得出结论:接口中的成员都是公共的权限。

**********************************************************************************************************************

实现:关键字implements

注:类与类之间是继承关系,类与接口之间是实现关系。

实现的引入:因为抽象类里的抽象方法只有实现(子类方法覆盖)后才可以用。

格式:

class DemoImpl implements Demo{
	public void show1(){
		
	}
	public void show2(){
		
	}
}

 注意:1.接口类是把接口中所有的内容都拿过来,所以接口类不能实例化;

    2.只有由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。

接口是类不能多继承的改良:

      因为类多继承会造成方法调用的不确定性,而多实现不会。主要区别在于有无方法体

例子:

interface A{
    public void show();
}
interface Z{
    public void show();
}

class Test implements A,Z{
    public void show() {
        
    }
}
原文地址:https://www.cnblogs.com/thinksasa/p/2731487.html