A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© NO? 中级黑马   /  2014-4-6 21:42  /  2790 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张老师在视频中说道:要面向接口编程。可是为什么啊?面向接口编程而不面向子类编程,那样不是只能用接口的方法了吗?如果要调用子类的特有方法不是在编译时期就不能通过吗?
求答案。先谢谢了。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 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 {}


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
zhangbingyuan 发表于 2014-4-6 21:50
首先和楼主说一下面向接口编程的好处 接口在项目就是一个业务逻辑,面向接口编程就是先把客户的业务提取出 ...

3q.very mach
回复 使用道具 举报
本帖最后由 Peach2014 于 2014-4-6 22:56 编辑

我给你打一个简单的比方,
现实生活:
在我们中国,现在进行计划生育,那我们就只能生一个孩子,这时我们就生了一个男孩,但是我们又非常想要一个女孩,这可怎么办才好呢?法律不准我们有二胎。所以我们选择了收养孤儿,只要我们条件满足,我们就可以拥有一群孩子了。
java中的语言:
在java中,规定实体类不能多继承,所以我们只能继承一个类,因此我们继承了一个类(面向子类编程)。但是我们拥有添加的方法,这可怎么办才好呢?java不允许多类的继承。所以我们选择了实现接口(面向接口编程),所以只要我们实现了接口中的方法,我们就可以拥有一批方法了。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马