AS3 抽象类与接口
抽象类(Abstract)是不能被实例化的类,往往不给出具体代码的实现,归纳子类共同特征和行为。
(AS3没有abstract关键字,但也可以定义概念上的抽象类。)
在理想的继承架构设计里,具体类都继承于抽象类。
①归纳,尽可能多的归纳。②简练,尽可能少的简练。
通过第三方类AbstractEnforcer判断生成对象的类型,或抛出异常。
原理:先用flash.utils.getQualifiedClassName()生成所属类的全饰名称,
再用flash.utils.getDefinitionByName()得到对象类的Class的引用,
如果一致则表示是抽象类被实例。
在抽象类import com.mimswright.utils.AbstractEnforcer,
构造函数插入AbstractEnforcer.enforceConstructor(this, AbstractFoo),
抽象方法插入AbstractEnforcer.enforceMethod()。
(注意,包外类不可用,原理在文件中)
实际上,接口仅包含一组(n个)方法声明,没有具体代码。实现接口的类必须定义其方法。
语法上,只定义public方法名称,参数和返回值。
运用上,如果一些类没有关联,但拥有相同的public方法,那么归纳为一个接口。
可以看成同一数据类型,享受向上向下转换的好处。
能够以其他数据类型向上转换,是接口的核心。
OOP编程一条重要法则:依赖倒转原则(Dependence Inversion Principle)
方法是尽量依赖和使用抽象类和接口,而不是具体类。
创建接口:
package{
访问控制 interface 接口名称{
static function 方法名(参数:参数类型):返回类型
function 方法名(参数:参数类型):返回类型
function get 属性名():返回类型
function set 属性名(参数:参数类型):void
}
}
注意:接口有访问控制,但方法不可有,不定义且为public,没有任何实现。
接口不能定义属性,但可以用getter和setter。
实现(implements)接口:
一个类可以实现多个接口,用“,”隔开。如果类和接口不在同一包内,需要import。
public class 类名 implements 接口1,接口2{...}
接口中定义的方法的实现只能用public,三要素必须相同,且不能和其他重复。
参数名称、参数默认值课更改。
实现一类接口的类看成同一数据类型。
向上转换
private function print(obj:IName):void{}
var cloneA:IClonable = copy(a) -> IClonalbe、copy是自定义的
向下转换
if(cloneObj is A) trace((cloneObj as A))
接口的多继承
interface IFoo extends IBar1,IBar2{}
子接口继承父接口的所有方法定义,要注意的是不能和所有父接口有命名冲突。
没有override机制,因为没有用。
接口分类
多方法接口:归纳具有多种功能的数据类型
单方法接口:只有一个方法,运用特定的方法
标识接口:没有方法,将类分类
抽象类和接口的区别
抽象类和接口都是抽象的数据类型,简称抽象类型。
抽象类 √ 有部分实现,可以统一修改子类代码。接口不方便改动。
接口 √ 多接口,单继承,可作为次类型。当类作为多种类型存在时,优先考虑接口。
将接口和抽象类结合使用:
①充分利用抽象类对子类的影响,集中管理代码。抽象类也可使用接口。
②系统的可扩展性增加。
默认适配器(Default Adapter)
抽象类实现接口,具体类继承抽象类。 ---|>接口<<interface>> —|>继承,泛化
AS3 抽象类与接口相关推荐
- 不允许使用抽象类类型的对象怎么办_Java基础——面试官:你来说说抽象类和接口的区别...
无论你是新手Java 程序员,还是老手程序员,可能在实际开发中很少自己写抽象类. 但是抽象类在某些时候的功能很强大,可以保证子类中百分百实现父类中的方法 -- 普通类的弊端,消除子类的冗余代码 -- ...
- php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析
本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...
- C#中抽象类和接口的区别
一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆 ...
- java中抽象接口_一篇文章让你彻底理解java中抽象类和接口
相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编程的时候,还是在面试的时候,抽象类与接口都显得格外重要!希望看完这篇博客文 ...
- 类、抽象类、接口之间的区别
目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...
- Java 抽象类与接口的区别
接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如, ...
- java 接口工程_Java工程师(15)抽象类与接口
抽象类 思考下面程序潜在的问题 交通工具中定义了4个方法,其中行驶方法内部会依次调用启动.加速.停止方法.由于不同的交通工具,启动的方式差异很大,所以交通工具类中并不实现该方法,而是将其交给子类实现. ...
- 《Java技术》第三次作业--面向对象——继承、抽象类、接口
1.阅读下面程序,分析是否能编译通过?如果不能,说明原因.应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来? class Grandparen ...
- 抽象类和接口的联系与区别
抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
最新文章
- append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域
- python xpath语法-Python爬虫:Xpath语法笔记
- python编程思路不清晰_安利一波Python编程中非常实用的那些黑魔法
- 笔记-信息化与系统集成技术-云计算操作系统的主要关键技术
- YY一下,扎克伯格做了一个什么样的AI家居助手?
- 【Linux】一步一步学Linux——free命令(80)
- MKL学习——功能简介
- [解决方案]ln:无法创建符号链接‘ /usr/bin/python‘:权限不够
- 11组软件工程组队项目失物招领系统——界面设计文档
- 《流畅的Python》读书笔记——Python对象引用、可变性和垃圾回收
- 【工作方法系列】:STEP1 - 5分钟方法
- html表格圣杯布局页面,Css圣杯布局
- Linux系统运维与架构设计之Linux概述
- 互联网集体下沉,PKQ后又一匹下沉黑马出现了
- FTPClientUtil FTP客户端工具
- 使用css3和tween.js二种方式实现照片翻转
- android图标未读消息,Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示...
- 从曾经的一家独大到现在的群雄逐鹿,大数据时代的数据库圈为啥如此之乱?
- linux驱动编程——ch340x驱动移植
- css-loader 版本号,css loader安装问题