抽象类VS接口
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了抽象类VS接口,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1198字,纯文字阅读大概需要2分钟。
内容图文
![抽象类VS接口](/upload/InfoBanner/zyjiaocheng/1071/f509f6ec53fc464aa59403f62d480415.jpg)
抽象方法:
抽象方法没有方法体;抽象方法必须在抽象类里;抽象方法必须在子类中被实现,除非子类是抽象类。(实例化没有意义就可以定义为抽象类)
抽象类:
不能被实例化(但可以创建一个引用变量,其类型是一个抽象类,指向非子类实例),抽象方法必须在抽象类里;抽象类中不一定有抽象方法;一个抽象类的抽象方法必须被子类实现,除非子类也是抽象类。
关键字:abstract;
注意:没有抽象构造方法,也没有抽象静态方法;抽象类里可以有非抽象方法,创建子类的实例时可以调用
接口
关键字:interface
语法:
修饰符 interface 接口名称[externds 其他接口名]{
//声明变量
//声明方法
}
1.解决单根继承,系统对外提供的所有服务
接口特性;
接口中的变量都是静态常量(public static fianl),必须显式初始化。
接口中所有的方法默认都是public absract
接口没有构造方法,不可以被实例化,但可以被实现。
接口里可以声明(并且可以提供实现)静态方法
接口中的静态方法必须的是public 的,public修饰符可以省略,static修饰符不能省略;静态方法不能被继承及覆盖,所以被具体 所在的接口调用;接口中静态方法可以有多个
接口可以有默认方法,接口中可以定义默认法方法default,就可以有方法体,默认方法会被直接继承,通过实例直接调用。如果一个类实现了多个接口,多个接口都定义了多个同样的默认方法
方案一:实现类需要覆盖重写接口中的默认方法不然会报错
方案二:可以使用super来调用指定接口的默认方法
如果一个类继承了抽象类,实现了一个接口,抽象类和接口存在相同的方法(采取类优先的原则,优先继承抽象类的方法)
默认接口可以有多个
默认方法的好处解决了接口与其实现类之间耦合度过高,修改接口,所有实现类必须随之修改的问题
实现类可以实现多个接口;
关键字:implements,多个接口使用逗号隔开
总结;一个类通过实现接口的方式,从而来继承接口的抽象方法;
一个类只能继承 一个类,但可以实现多个接口;
一个接口不能实现另一个接口,但可以继承多个其他接口。
抽象类和接口
相同点:代表系统的抽象层
都不能被实例化
都能包含抽象方法(用于描述系统提供的服务,不必提供具体实现)
不同点:在抽象类中可以为部分普通方法提供默认实现
一个类只能继承一个直接的父类,但可以实现多个接口
抽象类和接口使用原则:
is-a抽象类;has-a接口
接口做系统与外界交互的窗口(接口提供服务)
接口本身一旦制定,就不允许随意修改
抽象类可以完成部分功能的实现,还有部分功能可以作为系统的扩展点
抽象类便于复用,接口便于功能扩展和维护
原文:https://www.cnblogs.com/tiantongtong/p/13181817.html
内容总结
以上是互联网集市为您收集整理的抽象类VS接口全部内容,希望文章能够帮你解决抽象类VS接口所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。