博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口到底是个什么玩意
阅读量:6272 次
发布时间:2019-06-22

本文共 1711 字,大约阅读时间需要 5 分钟。

接口存在的意义:

  一直对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() {            }}

 

转载地址:http://noopa.baihongyu.com/

你可能感兴趣的文章
程序员的罪与罚
查看>>
SQL*LOADER错误总结
查看>>
SQL日志收缩
查看>>
【转】MySQL Query Cache 小结
查看>>
SVN分支和合并的简单例子
查看>>
PHP实现的封装验证码类
查看>>
Augular初探
查看>>
PHPStorm下XDebug配置
查看>>
【LeetCode】55. Jump Game
查看>>
Android应用盈利广告平台的嵌入方法详解
查看>>
Linux(CentOS6.5) 开放端口,配置防火墙
查看>>
Func与Action
查看>>
Android ViewPager 应该及技巧
查看>>
ODI KM二次开发手册
查看>>
iOS通讯录整合,兼容iOS789写法,附demo
查看>>
如何将内核静态库编译连接到驱动程序中去【转】
查看>>
GNU KHATA——开源的会计管理软件
查看>>
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 用SPD开发SharePoint应用程序...
查看>>
Java读取文件加锁代码Demo(利用Java的NIO)
查看>>
ES6 中 Symbol.split的用法
查看>>