zoukankan      html  css  js  c++  java
  • Java接口面面观

    在介绍接口之前,我们先了解了解它的兄弟“继承”先生。

    在面向对象编程中,继承避免了多个类间重复定义共同行为,既帮我们节约了时间也节约了系统资源。看起来继承对我们有莫大的帮助,但是实际编程中我们应该少用继承。为什么呢?

    其中的原因很多,笔者觉得最大的一个原因是继承强调了一种"is a"的关系,即“是一种”的关系。

    比如说麻雀是一种鸟,鲫鱼是一种鱼。这就会带来一个问题了,假设有一个东西它和鸟一样会飞,像鱼一样能在水里游,那它就一定是一种鸟一种鱼么。答案当然是否定的。

    这样如果在程序中,多个类有同一种行为,能把它们都继承自一个父类么?如果你不怕天下大乱,我想你可以试试看。

    不过不用怕,还好接口来了。网上看到一个对接口的描述,我觉得非常不错。

    他说接口是一个标准,生活中有很多接口。比如说水龙头管接口、电源接口等。以前水龙头生产商在采用接口之前,厂商要同时提供水龙头和下水管,他们是一体的不能变更。同时也只适用于他的一种产品。而有了接口之后,厂商就不用管他的下水管如何设计了,只用按照接口标准来生产水龙头,完成后直接接到下水管上就可以了。这就是面向接口,这样你的下水管就可以使用所有的符合下水管标准的水龙头,而不是之前的一种水龙头。很明显现在更换水龙头也更加的方便。

    接口是对一种行为的定义,不同类可以有同一种行为。这样使得接口和实现分离,适用于团队的协作开发。主要为了实现松散耦合的系统,便于以后升级扩展。

    另外继承就像是类的亲爹,而接口是类的干爹。亲爹只有一个,而干爹可以认很多个。其实也很好理解,继承强调"is a"关系,当然只能是一种。而接口定义的是行为,一个类必然可以有多种行为。

    具体语法层面,定义行为使用interface关键字,且接口中的方法不能操作必须是抽象的,直接表示为abstract,且一定是public。

    如public interface Swimmer{

          public abstract void swim();

    }

    使用接口必须使用implements关键字,此时对接口中定义的方法有两种处理方式,一是操作接口中定义的方法,二是再度将该方法标示为abstract.

    public abstract class Fish implements Swimmer{

    ...

    }

    另外接口可以继承别的接口,也可同时继承两个以上的接口,同样也是使用extends关键字,代表了继承父接口的行为。

    接口的使用大部分都在比较大的项目中,因此在初学编程时并没有机会接触到接口,随着学习的深入相信会对接口的使用有更多的感触。

  • 相关阅读:
    Maven POM 元素参考表
    Hibernate MySql 连接池隔天断开解决方法
    html页面乱码问题
    Maven常用插件列表
    cygwin下使用vi
    干掉已打开的端口(如:停止8080端口)
    将Maven的Web Project部署到Tomcat
    [转]利用FtpClient类实现文件的上传下载功能
    关于生成GUID
    FinalShell 离线激活工具
  • 原文地址:https://www.cnblogs.com/skylife/p/7839341.html
Copyright © 2011-2022 走看看