zoukankan      html  css  js  c++  java
  • 接口到底是个什么玩意

    接口存在的意义:

      一直对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() {
            
        }
    }
  • 相关阅读:
    MyBatis进阶(一)
    git命令整理
    今天的任务--git练习
    深入浅出JavaScript(一)
    数据结构_树_二叉搜索树
    网络_体系结构
    数据结构_树
    算法_五大经典搜索算法
    SpringMVC入门
    spring 线程异步执行
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2731487.html
Copyright © 2011-2022 走看看