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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tangxiaobo1991 中级黑马   /  2014-2-12 22:12  /  1431 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 tangxiaobo1991 于 2014-2-12 22:46 编辑

今天鄙人自学到了抽象类和接口的部分,小弟有几个疑惑希望大神能够点拨一下下。我就疑惑既然有了抽象类,为什么还要接口??而且据说接口还用的很普遍。例如下面的例子:
abstract class Person
{
   void speak(){}
    abstract void study();
}
interface smoke()
{
    public abstract static void smoke();
   final int x=3;
}

上面的这段代码完全可以用下面的代码代替
abstract class Person
{
  void speak(){}
  abstract void study();
abstract static void smoke();
final x=4;
}
在主函数中实例化中,完全可以用下面的方法代替上面的代码。那么既然接口也是一种特殊的抽象类,完全可以用抽象类代替接口,为什么还要用接口呢?

评分

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

查看全部评分

9 个回复

倒序浏览
本帖最后由 panzhenglian 于 2014-2-12 22:23 编辑

首先,Java不支持多继承,也就是说一个类只允许有一个父类,而接口的出现,就弥补了这一个不足,一个类可以实现多个接口。接口可以相当于一个规则,接口运用方面举个小例子:当你的一个方法的某个参数需要传递一个对象时,你不知道要传递的对象名字,但你知道这个对象一定有某个方法,这时候就可以定义一个接口,写上抽象方法,下次传递参数时就可以传递这个接口的实现类对象就可以了。

评分

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

查看全部评分

回复 使用道具 举报
java不支持多继承啊,接口就是多继承的另一种表现。不同的类可以实现同一个接口 ,这就是接口的好处。

评分

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

查看全部评分

回复 使用道具 举报
一年_Hei 来自手机 中级黑马 2014-2-12 22:26:12
板凳
接口比抽象类用的多。接口定义规则,需要它才去实现。接口还能实现多继承。而抽象类必须写子类才能创建对象。个人感觉接口灵活,实用性高
回复 使用道具 举报
徐君 发表于 2014-2-12 22:26
java不支持多继承啊,接口就是多继承的另一种表现。不同的类可以实现同一个接口 ,这就是接口的好处。
...

继承也可以一个父类有许多子类啊!!
回复 使用道具 举报
panzhenglian 发表于 2014-2-12 22:22
首先,Java不支持多继承,也就是说一个类只允许有一个父类,而接口的出现,就弥补了这一个不足,一个类可以 ...

精辟啊,,果然高手
回复 使用道具 举报
突然感觉,类的继承和数据库的思想有点像
回复 使用道具 举报
kira 中级黑马 2014-2-13 11:52:21
8#
因为java不支持多继承 而且还有一个就是上面没说到的 降低耦合性
继承的耦合性会大于实现接口的耦合性
比如说多线程 我实现runnable的好处肯定大于继承Thread
而且接口之间还能相互继承

评分

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

查看全部评分

回复 使用道具 举报
kira 发表于 2014-2-13 11:52
因为java不支持多继承 而且还有一个就是上面没说到的 降低耦合性
继承的耦合性会大于实现接口的耦合性
比 ...

前辈,我还没学到那里。。不过感觉好高档大气上档次的赶脚!!!多多交流
回复 使用道具 举报
kira 中级黑马 2014-2-13 15:40:08
10#
tangxiaobo1991 发表于 2014-2-13 13:33
前辈,我还没学到那里。。不过感觉好高档大气上档次的赶脚!!!多多交流 ...

这个很简单 耦合性说白了就是关联度 举个例子 我买显卡 同样的显存 同样的支持DX11.1
同样的性能 假如有一个显卡只支持一种主板 而另一显卡支持多种主板 那我肯定是买后一种
而接口的本质就是降低耦合性 里面的方法可以看成一种规则
抽象类归根结底还是个类 是类只有单继承 接口就是为了弥补这点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马