zoukankan      html  css  js  c++  java
  • java中的接口interface

    关于接口

    接口描述了实现了它的类拥有什么功能。因为Java是强类型的,所以有些操作必须用接口去约束和标记。接口作为类的能力的证明,它表明了实现了接口的类能做什么。

    类似与class,interface也是java中的一种引用类型。

     

    接口中的成员

    接口中的所有的成员,缺省情况下都是public的,也必须是public,无论是方法,还是字段。因为接口就是规定了API,如果实现的类不公开接口中的API,怎么能叫API呢?

    一般情况下,接口中可以 定义方法 和 字段。

    接口中的字段,必须(默认)为 public static final  。在定义的接口中必须初始化,因为是final。它们将成为类中的静态常量字段

    接口中的方法,必须(默认)为 public abstract    。只需在接口中定义即可,不能实现(让实现了接口的类去实现)。将成为类中的public 实例方法  , 实现了接口的类必须实现接口中定义的方法。

    定义一个接口

    interface InterfaceName [extends interface1,interface2]
    {
        void foo();
        
        void bar();
        
        //...红色部分是 可选的
    
    }

    接口和类之间的implements关系

    接口就是用来被实现implements 的 ,不然定义接口也就没意义了。Java中的类只能继承一个父类,但是可以实现多个接口。除了抽象类,普通类必须实现接口中定义的所有方法。

    当一个类实现了某个接口后,接口可以看做是 是实现了接口的类 的 父类型。利用多态的特性,我们往往选择面向接口编程,而不是面向具体的类,这样可以让程序员关注API而不是内部实现,并提供更大的灵活性。

    public class Test
    {
        
        public static void main(String[] args)
        {
    
            Workable[] workers = {
                    
                new Teacher(),new Student()    
            };
            
            
            fireWork(workers);
            
        }
        
        public static void fireWork(Workable[] workers)
        {
            
            for (int i = 0; i < workers.length; i++)
            {
                workers[i].doTask();
            }
            
        }
    
    }
    
    interface Workable
    {
        void doTask();
    }
    
    class Student implements Workable
    {
        @Override
        public void doTask()
        {
            System.out.println("学生的工作是学习");
        }
    }
    
    class Teacher  implements Workable
    {
        @Override
        public void doTask()
        {
            System.out.println("老师的工作是教书");
        }
    }

    每一个Teacher 、Student对象都是Workable对象,可以直接隐式转换。fireWork方法是面向接口编程的思想,传入的参数为Workable数组,那数组中的所有元素都可以执行

    doTask方法(这正是接口约束带来的效果),而不管他们的具体类型。

     

    抽象类与接口

    java集合框架中的例子。抽象类不必实现接口中的方法,但是普通类一定强制实现接口中的所有方法。

    接口和接口之间的extends关系

    接口可以扩展extends 已经存在的接口,如果接口A扩展了接口B,则A将继承B中的所有成员,就像他们定义在A中一样。一个接口可以扩展多个接口

    interface Workable
    {
        void doTask();
    }
    
    
    
    interface SchoolMember extends Workable
    {
        void sayHello();
    }

    这样,一个类如果要实现SchoolMember 接口,就必须实现 doTask 和 sayHello  2个方法,因为SchoolMember继承了doTask方法。

    接口的总结

    1、接口不能new出实例。但可以定义接口类型的变量,去引用实现了这个接口的类的对象。此时接口相当于实现类的父类。

    2、接口中的方法不实现,而是用一个 分号  ; 代替函数体。

    3、接口是Java中的一种引用类型。

  • 相关阅读:
    论文研读
    论文研读
    2019春 软件工程实践 助教总结
    第十三次作业成绩汇总
    第九次作业成绩汇总
    第十七周助教工作总结
    Docker 学习笔记(四):Bug 日志与其他零散知识
    bash 和 powershell 常用命令集锦
    Kubernetes 学习笔记(二):本地部署一个 kubernetes 集群
    Kubernetes 学习笔记(一):基础概念
  • 原文地址:https://www.cnblogs.com/lulipro/p/6081107.html
Copyright © 2011-2022 走看看