接口

所谓 interface,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。

https://blog.csdn.net/csdn_aiyang/article/details/71171886
接口是对动作的抽象,抽象类是对本质的抽象。

抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人和女人,他们的抽象类是人类,而猫和狗的抽象类是宠物类。人类可以吃东西,宠物类也可以吃东西,但是两者不能混为一谈,因为有本质的区别。这个“吃东西”是一个动作,你可以把“吃东西”定义成一个接口,然后让两个类去实现它的方法。

所以,在高级语言上,一个类只能继承一个类或抽象类,正如人不可能同时是动物类又是植物类,但是可以实现多个接口,例如,吃饭接口、呼吸接口等。

2、使用情况
抽象类不能被实例化,强制性要求子类必须实现抽象方法
接口所有方法,如果抽象类实现接口时,是否被实现都可,但是普通类实现接口,必须实现所有接口方法

a.抽象类 和 接口 都是用来抽象具体对象的,但是接口的抽象级别最高;

b.抽象类可以有具体的方法和属性, 接口只能有抽象方法和不可变常量(final);

c.抽象类主要用来抽象类别,接口主要用来抽象功能;

d.抽象类中抽象方法不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的;

e.抽象类实现接口时,接口的方法在抽象类中可以被实现也可以不被实现,而普通实现接口必须实现所有接口方法。

3、使用方向

当你关注一个事物的本质的时候,用抽象类;
当你关注一个操作的时候,用接口。

在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接口实现,这样,多态就能发挥出威力。

如果一个抽象类没有字段,所有方法全部都是抽象方法

abstract class Person {
    public abstract void run();
    public abstract String getName();
}

就可以把该抽象类改写为接口:interface。

在Java中,使用interface可以声明一个接口:

interface Person {
    void run();
    String getName();
}

所谓interface,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。因为接口定义的所有方法默认都是public abstract的,所以这两个修饰符不需要写出来(写不写效果都一样)。

当一个具体的class去实现一个interface时,需要使用implements关键字。举个例子:

class Student implements Person {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        System.out.println(this.name + " run");
    }

    @Override
    public String getName() {
        return this.name;
    }
}

我们知道,在Java中,一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface,例如:

class Student implements Person, Hello { // 实现了两个interface
    ...
}

一个interface可以继承自另一个interface。interface继承自interface使用extends,它相当于扩展了接口的方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 接口 - 廖雪峰的网站 在抽象类中,抽象方法本质上是定义接口规范:即规定高层类的接口,从而保证所有子类都有相同的接...
    PyYun阅读 161评论 0 0
  • 抽象类-求图形面积多个类,有相同的方法,可以抽出一个父类出来,把相同的方法放到父类当中 1.每一个圆形都有面积不同...
    我叫吴智斌阅读 650评论 0 1
  • 内容来源于《Web接口开发与自动化测试——基于Python语言》虫师编著,如有涉及版权问题,归虫师本人所有。请大家...
    无罪的坏人阅读 721评论 0 0
  • 接口 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的类 。 接口只描述所应该具备的方法,并没有具...
    Seth_1x1y阅读 257评论 0 0
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,368评论 0 13