前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java接口

Java接口

作者头像
闲花手札
发布2021-08-24 14:41:34
1.1K0
发布2021-08-24 14:41:34
举报
文章被收录于专栏:闲花手札

接口

概念

接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)

格式

interface :用来声明接口的关键字

代码语言:javascript
复制
声明格式:
    interface 接口名 {
        静态常量;
        抽象方法;
    }

实现格式:
    class 类名 implements 接口名 {

    }

特点

代码语言:javascript
复制
1、接口中的成员变量只能是静态常量,定义时必须初始化。默认修饰符:public static final
2、接口中没有构造方法,因为接口不能实例化对象
3、接口中的成员方法只能是抽象方法,没有方法体。默认修饰符:public abstract
4、接口的实现类必须重写接口中方法,或者是一个抽象类(可以重写也可以不重写接口中的方法)

接口的声明和实现

代码语言:javascript
复制
interface play{
    // 常量,缺省修饰符:public static final
    int time = 10;

    // 抽象方法,缺省修饰符:public abstract
    void geme();
}

public class TestInterface3 implements play{

    // 重写接口中的方法
    @Override
    public void geme() {
        System.out.println("玩游戏");
    }

}

【注意】接口的实现类必须重写接口中的方法

抽象类实现接口

代码语言:javascript
复制
interface servlet {
    void init();

    void service();
}

abstract class BaseServlet implements servlet {
    // 重写init()方法
    @Override
    public void init() {
        System.out.println("初始化");
    }
}

class MyServlet extends BaseServlet {

    @Override
    public void service() {
        System.out.println("服务方法");
    }
}

public class Test {
    public static void main(String[] args) {
        new MyServlet().init();
        new MyServlet().service();
    }
}

【注意】抽象类实现接口,可以选择性重写也可以不重写接口中的方法

类的接口多实现

代码语言:javascript
复制
interface Play {
    void geme();
}

interface Eat {
    void noodles();
}

public class TestInterface3 implements Play, Eat {

    // 重写Play类中的方法
    @Override
    public void geme() {
        System.out.println("玩游戏");
    }

    // 重写Eat类中的方法
    @Override
    public void noodles() {
        System.out.println("吃面条");
    }

}

【注意】接口的实现类必须重写所有接口中的方法

接口的继承

代码语言:javascript
复制
interface Eat {
    void noodles();
}

interface Play {
    void happy();
}

// 单继承
interface Person extends Play {

}

// 多继承
interface Animal extends Play, Eat {

}

// 实体类实现Animal接口,重写所有方法
class Biology implements Animal {

    @Override
    public void happy() {
        System.out.println("玩得开心");
    }

    @Override
    public void noodles() {
        System.out.println("面条好吃");
    }

}

public class Test {
    public static void main(String[] args) {
        Biology biology = new Biology();
        biology.happy();    // 玩得开心
        biology.noodles();    // 面条好吃
    }
}

【注意】接口之间可以单继承,也可以多继承

jdk1.8新特性:default接口

代码语言:javascript
复制
interface Function {
    void test();

    default void testDefault() {
        System.out.println("default修饰的接口可以有方法体");
    }
}

// default 修饰的接口可以不被重写
class Base implements Function {

    @Override
    public void test() {
        System.out.println("Base类重写Function接口中的方法");
    }
}

// default 修饰的接口也可以重写
class Boost implements Function {

    @Override
    public void test() {
        System.out.println("Boost类重写Function接口中的方法");
    }

    @Override
    public void testDefault() {
        System.out.println("Boost类重写Function接口中的default方法");
    }
}

public class TestInterface2 {
    public static void main(String[] args) {
        Base base = new Base();
        Boost boost = new Boost();

        base.test();        // Base类重写Function接口中的方法
        base.testDefault();    // default修饰的接口可以有方法体
        boost.test();        // Boost类重写Function接口中的方法
        boost.testDefault();// Boost类重写Function接口中的default方法
    }
}

【注意】default修饰的接口可以不被重写

总结

代码语言:javascript
复制
1、接口是对类的扩展,通过接口可以让类拥有更多更强的功能
2、接口中只有全局常量和抽象方法,所以不能实例化
3、接口的实现类必须重写所有方法,或者是个抽象类
4、接口可以多实现
5、接口可以单继承,也可以多继承
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口
    • 概念
      • 格式
        • 特点
          • 接口的声明和实现
            • 抽象类实现接口
              • 类的接口多实现
                • 接口的继承
                  • jdk1.8新特性:default接口
                    • 总结
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档