接口

举报
@小红花 发表于 2022/02/25 16:41:51 2022/02/25
【摘要】 接口也是一种引用数据类型,编译之后也是一个class字节码文件。接口是完全抽象的。(抽象类是半抽象)或者也可以说接口是特殊的抽象类。接口的语法:修饰符列表 interface 接口名{}接口支持多继承,一个接口可以继承多个接口。接口中只包括两部分内容:常量和抽象方法。接口中没有其他内容。接口中所有的元素都是public修饰的。接口中抽象方法的public abstract 可以省略。接口中的...
  • 接口也是一种引用数据类型,编译之后也是一个class字节码文件。
  • 接口是完全抽象的。(抽象类是半抽象)或者也可以说接口是特殊的抽象类。
  • 接口的语法:修饰符列表 interface 接口名{}
  • 接口支持多继承,一个接口可以继承多个接口。
  • 接口中只包括两部分内容:常量和抽象方法。接口中没有其他内容。
  • 接口中所有的元素都是public修饰的。
  • 接口中抽象方法的public abstract 可以省略。
  • 接口中的常量的public static final 可以省略。
  • 接口中的方法都是抽象方法,所以接口中的方法不能有方法体。
  • 当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖,重写)。
  • 一个类可以实现多个接口。
  • 使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)

 

 

extendsimplements可以共存,extends在前,implements在后。

public class 类名 extends 父类 implements 接口名{}

 

类和类之间叫做继承,类和接口之间叫做实现。可以把实现看作为继承。

继承用extends关键字完成。

实现用implements关键字完成。

 

接口在开发中的作用:就三个字   解耦合

接口在开发中的作用和多态在开发中的作用类似。

 

多态:面向抽象编程,不要面向具体编程。

public class Master{

public void feed(Animal a){

}

}

面向Animal父类编程,父类是比子类更抽象的。

所以我们叫做面向抽象编程。

 

接口是完全抽象的,是面向抽象编程,也是面向接口编程。

有了接口就有了可插拔,可插拔表示扩展力强,不是焊接死的。

接口离不开多态,接口只能new子类。(父类指向子类)

 

任何一个接口都有调用者和实现者。

接口可以将调用者和实现者解耦合。

调用者面向接口调用。

实现者面向接口编写实现。

 

以后进行大项目的开发,一般都是将项目分离成一个模块一个模块的,模块和模块之间采用接口衔接。降低耦合度。

 

is a (继承)has a (关联)like a (实现)

 

Cat is a Animal (猫是一个动物)

凡是能够满足is a 的表示继承关系。

public class Cat extends Animal{

}

 

she has a Pen (她有一支笔)

凡是能够满足has a 关系的表示关联关系。

public class She{

Pen pen;

}

 

Cooker like a FoodMenu (厨师像一个菜单一样)

凡是能够满足like a 关系的表示实现关系。

实现关系通常是:类实现接口

public class Cooker implements FoodMenu{

}

 

 

抽象类和接口的区别:

抽象类是半抽象的。

接口是完全抽象的。

 

抽象类中有构造方法。

接口中没有构造方法。

 

接口和接口之间支持多继承。

类和类之间只能单继承。

 

一个类可以同时实现多个接口。

一个抽象类只能继承一个类(单继承)。

 

接口中只允许出现常量和抽象方法。

 

以后接口使用的比抽象类多,一般抽象类使用的还是少。

接口一般都是对行为的抽象。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。