本帖最后由 zhangbingyuan 于 2014-4-6 21:58 编辑
首先和楼主说一下面向接口编程的好处 接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出来,作为接口。业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。 采用基于接口编程的项目,业务逻辑清晰,代码易懂,方便扩展,可维护性强。即使更换一批人员,新来的人依然可以快速上手。对于公司来说,意义更大。
简单一点说,接口就好比一个USB插口,你就知道通过它可以传输东西,不必知道它是怎样实现的。
至于楼主所说的面向子类编程,我没太懂楼主的意思,楼主所说的是子类继承父类的方法么,但是一个子类只能继承一个父类,而却可以实现多个接口。刚看到一个讲继承问题的说的不错的 希望对楼主有帮助
面向对象的编程中,子类可以继承另一个类(称作超类)的属性和方法……
面向对象的编程中,子类可以继承另一个类(称作超类)的属性和方法。若要在两个类中创建这种关系,应使用 class 语句的 extends 子句。若要指定超类,请使用以下语法:
class SubClass extends SuperClass {} 在 SubClass 中指定的类将继承超类定义的所有属性和方法。例如,可以创建一个 Mammal 类,定义所有 Mammal 所共有的属性和方法。若要创建 Mammal 类的一个变体,例如一个 Marsupial 类,则应扩展 Mammal 类(即,创建 Mammal 类的一个子类)。 class Marsupial extends Mammal {} 子类将继承超类的所有属性和方法,包括使用 private 关键字声明的任何私有属性或方法。 您可以扩展您自己的自定义类,也可以扩展任何内置动作脚本类,例如,XML、Sound或MovieClip 类。扩展内置动作脚本类时,您的自定义类将继承该内置类的所有方法和属性。 例如,以下代码定义 JukeBox 类,它扩展内置的 Sound 类。它定义一个名为 songList 的数组和一个名为 playSong() 的方法。此方法播放歌曲并调用 loadSound() 方法(继承自 Sound 类)。 class JukeBox extends Sound { var songList:Array = new Array("beethoven.mp3","bach.mp3","mozart.mp3"); function playSong(songID:Number) { this.loadSound(songList[songID]); } } 如果您没有将对 super() 的调用放入子类的构造函数中,则编译器将自动生成对其不含参数的直接超类的构造函数的调用作为该函数的第一个语句。如果超类没有构造函数,则编译器将创建一个空构造函数,然后生成从子类对该构造函数的调用。但是,如果超类采用其定义中的参数,则必须在子类中创建构造函数,并用必需的参数调用超类。 多重继承(即,从多个类继承)是不允许的。但是,如果使用单个 extends 语句,则类便可以有效地从多个类继承: // 不允许 class C extends A, B {} // 允许 class B extends A {} class C extends B {} 您还可以使用 extends 关键字创建接口的子类: interface iA extends interface iB {}
|