美文网首页
Java-0009-interface接口

Java-0009-interface接口

作者: 云转水流 | 来源:发表于2016-07-19 01:16 被阅读15次

2016.7.18

interface接口

接口是一种引用类型,接口里是若干属性和方法。

接口中的成员变量具有公共性(public)、静态性(static)和最终性(final),所以只能是常量。

接口中的实例方法则是只声明不实现,方法的实现要在需要实现接口的类里。
接口中的静态方法必须实现。

*注:但在Java8里可以把实例方法声明成default,可以在接口中实现方法。
接口可以多继承,即接口可以有多个父接口

****当接口作为参数类型时,没有语法可以合并表示实现了多个接口****

例如:
有两个接口

    public interface Standard1 {
        void first();
    }
    public interface Standard2 {
        void second();
    }

有一个类实现了Standard1接口和Standard2接口

    public class Collage implements Standard1,Standard2{
        public void first() {
            System.out.println("first standard");
        }
        public void second() {
            System.out.println("second standard");
        }
    }

有一个方法isConformed,这个方法有一个参数
当isConformed的参数类型为Standard1时,表示实现了Standard1接口的类的实例对象可以传入

    public static void isConformed(Standard1 standard){
        standard.first();
    }

当isConformed的参数类型为Standard2时,表示实现了Standard2接口的类的实例对象可以传入

    public static void isConformed(Standard2 standard){
        standard.second();
    }

这就是面向接口编程,具有极大的灵活性,最重要的Java设计原则之一。

但没法用任何语法将Standard1和Standard2合并表示为一个类型,作为isConformed方法的一个参数类型

解决方法:
新建一个Standard12接口继承Standard1和Standard1

    public interface Standard12 extends Standard1, Standard2 {

    }

然后将Standard12作为参数类型,这样就可以传入实现了Standard12的类的实例对象,即可以传入实现了Standard1接口和Standard2接口里的方法的类的实例对象

    public static void isConformed(Standard12 standard){
        standard.first();
        standard.second();
    }

但这个类不能implements Standard1接口和Standard2接口,必须implements Standard12接口。

    public class Collage implements Standard12{
        public void first() {
            System.out.println("first standard");
        }
        public void second() {
            System.out.println("second standard");
        }
    }

另外,也可以写一个abstract类实现Standard1接口和Standard2接口

    public abstract class AbstractStandard12 implements Standard1,Standard2{

    }

然后继承这个abstract类,这样这个abstract类就可以作为参数类型传参

    public class Collage extends AbstractStandard12{
        public void first() {
            System.out.println("first standard");
        }
        public void second() {
            System.out.println("second standard");
        }
    }

间接实现了用满足同时实现Standard1接口和Standard2接口的一种类型来传参

相关文章

  • Java-0009-interface接口

    2016.7.18 interface接口 接口是一种引用类型,接口里是若干属性和方法。 接口中的成员变量具有公共...

  • 接口接口接口

    发现很多朋友对于接口都很纠结,阐述一下个人对接口的理解。 接口分为很多种类型,程序语言内部接口 移动端和服务端接口...

  • Android常用接口

    不知名接口 头条接口: 科技接口: 财经接口: 军事接口: 体育接口: 房产接口: 足球接口: 娱乐接口: 电影接...

  • 第十八天 微信微博天气接口

    分享接口 微信接口 微博接口 天气接口 mob接口

  • 接口测试概述

    接口(interface)的概念 常见接口名词 接口测试: 接口测试目的: 接口测试的重要性: 接口测试流程 接口...

  • 接口测试

    接口测试概念: 接口:接口是为了提供一种服务 所有的接口统称为API,接口分为内部接口和外部接口 外部接口:测试被...

  • 接口

    接口 接口类型 空接口 接口嵌套 接口断言 type关键字

  • 线程池原理

    Callable 接口 Runnable 接口 Future接口 RunnableFuture 接口 Future...

  • JMeter-一个接口的返回值作为输入传给其他接口

    背景: 在用JMeter写接口case,遇到一种情况,接口1查看列表接口,接口2查看详情接口,接口2需要传入接口1...

  • 用户操作接口

    登陆 接口地址 获取列表 接口地址 删除 接口地址 批量删除 接口地址 编辑用户 接口地址 添加用户 接口地址

网友评论

      本文标题:Java-0009-interface接口

      本文链接:https://www.haomeiwen.com/subject/qkkpjttx.html