extends和implement的区别
本文首发于我的个人Blog阿西BUG,欢迎大家批评指正
前言
最近在学习pureMVC,发现其中不少类继承的时候会写成形如export default class AppFacade extends puremvc.Facade implements puremvc.IFacade {...}
的样子;最初我的理解中,extends
和implement
都是继承的意思,但是又一想,都是继承完全可以写成export default class AppFacade extends puremvc.Facade puremvc.IFacade {...}
那么问题来了,extends和implement的区别是什么呢?
假设
假如我有一个干净的抽象类A
abstract class A {abstract m(): void;
}
在继承(extends)方面,就像C#或者java里面那样,我可以像下面这样来继承这个抽象类:
//TypeScript
class B extends A{}
但是在实现方面(implement),在TypeScript中也可以去implement一个类:
class C implements A {m(): void { }
}
那么问题来了:类B和类C在行为上有什么不同?我该如何选择?
解答
implements关键字将类A当作一个接口,这意味着类C必须去实现定义在A中的所有方法,无论这些方法是否在类A中有没有默认的实现。同时,也不用在类C中定义super方法。
而就像是extends关键字本身所表达的意思一样,你只需要实现类A中定义的虚方法,并且关于super的调用也会有效。
我想在抽象方法的情况下,这并没有什么区别。但是很少有只使用抽象方法的类,如果只使用抽象方法,最好将其转换为接口。
回到前言中的例子,Facade是一个基类,IFacade是基于Facade扩展出来的一个接口类,那么此时AppFacade具有Facade的属性,同时又必须实现IFacade中定义的方法。
---end---
extends和implement的区别相关推荐
- Interface、extends、implement的区别
interface是定义接口的关键字. implement是实现接口的关键字. extends是子类继承父类的关键字. 1.interface接口定义不能包含任何属性(如:public.private ...
- 【Java】泛型中 extends 和 super 的区别?
<? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. ...
- java interface和类的 extends与implement 的简单总结
interface和类.extends与implement 接口 一个接口则可以同时extends多个接口,却不能implements任何接口 类 一个类只能extends一个父类,但可以implem ...
- java中implements是什么意思_Java:extends和implements的区别+用法
Java代码中的extends和implements让我感到很迷惑,现在终于弄明白它们之间的区别和用法了. //定义一个Runner接口 public inerface Runner { int ID ...
- Java中extends 与 implement 区别
简单说: 1.extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承, 2.JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implement ...
- 浅谈java中extends与implements的区别
Extends可以理解为全盘继承了父类的功能.implements可以理解为为这个类附加一些额外的功能:interface定义一些方法,并没有实现,需要implements来实现才可用.extend可 ...
- Java中<? super T>和List<? extends T>的区别
Java中<? super T>和List<? extends T>的区别 <? extends T> 下面通配符声明List<? extends Numbe ...
- 图解extends and implements 的区别
implements和extends的区别
- Java泛型中extends和super的区别?
区别 <? extends T>和<? super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概 ...
- java super extend 区别_Java泛型中extends和super的区别
extends T>和 super T>是Java泛型中的"通配符(Wildcards)"和"边界(Bounds)"的概念. extends T&g ...
最新文章
- python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...
- 阿里P9谈程序员程序员的青春饭
- Linux中Oracle的sqlplus下退格和Del键无效的问题解决
- keras实例化model后,结果返回NoneType
- 利用python进行数据分析 笔记_利用python进行数据分析--(阅读笔记一)
- 记忆化搜索=搜索的形式+动态规划的思想(来自百度百科)
- python垃圾分类准确率计算公式_准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure...
- 数据分析工具有哪些类型
- CODEVS 2102 石子归并 2
- java 风能玫瑰图,施用java awt画风向玫瑰图及风能玫瑰图程序
- 超详细讲解。QT+OpenGL画出不同纹理面立方体(部分面可反色)
- 电脑需要装杀毒软件吗?两个理由看完你做决定
- 008.UG_NX自由曲面
- Cocos2dx之Scene和Scene Graph
- java编写邮箱地址、邮箱验证
- 选修课:唐宋词课堂鉴赏笔记01
- nodejs+express解决微信公众号token验证失败
- linux关闭ipv6dns,dns关闭ipv6
- 魔鬼与牧师动作分离版
- 无线系统笔记(2)----麦克斯韦方程组