黑马程序员技术交流社区

标题: 何时使用抽象方法,何时又该使用接口? [打印本页]

作者: It's_Zero    时间: 2012-5-12 16:56
标题: 何时使用抽象方法,何时又该使用接口?
抽象和接口模糊了,有的时候觉得俩者可以都用,有时矛盾不晓得用哪个,请各位解释解释!!!
作者: 黑马-王建雨    时间: 2012-5-12 16:58
当你要定义的类中和抽象类有共性方法时要继承抽象类并实现其方法,当本类需要功能宽展时,需要实现接口。
作者: 黑马张立国    时间: 2012-5-12 17:27
抽象类必须继承(extends),接口必须实现(implments)。
当你已经继承了一个类,当你继承了一个类时,又想加功能就可以用接口。
(从另一个反面实现了多继承)
例如:
animal『吃 , 叫』
(狗  猫  猪 )的吃方法个不一样,就可以用抽象方法定义(具体的实现由子类完成)
这样就可以用抽象类来定义;
而创建了一个狗对象,又想给他实现猫的叫声,就可以把叫声封装成接口(接口往往是功能的集合);
在继承中不要为了某个功能而继承,要确实有父子关系。
模板设计模式就是把不确定的代码封装到接口,让其实现接口的类来执行具体代码。
作者: 张成龙    时间: 2012-5-12 18:36
接口能有私有的方法或变量,实现接口一定要实现接口里定义的所有方法;
继承抽象类可以有选择地重写需要用到的方法。
接口可以多继承,而类只能单继承。
作者: 于陈    时间: 2012-5-12 21:32
本帖最后由 于陈 于 2012-5-12 21:33 编辑
抽象是对象的抽象,而接口是一种行为规范!

1.有抽象方法的类必须是抽象类,而抽象类里面不一定要有抽象方法。
2.接口可以理解为一种抽象得更加彻底的抽象类,但这是不精确的说法。
3.所谓抽象,就是没有具体实现,抽象方法和接口里面的方法,在定义的时候不允许具体实现。
4.接口里面的方法只能是static final修饰(默认用这个修饰),而抽象类里面不限定方法修饰符,甚至可以不出现抽象方法。
5.抽象类并不能满足我们的需求,因为java的单继承,抽象类也好,其他类也罢,总之只能继承一个,但接口是可以实现多个的。
暂时就想到这么多....
作者: 崔陈喜    时间: 2012-5-12 21:56
接口和抽象类的区别:
                A:抽象类只能被单继承;接口可以被多实现。
                B:抽象类中的成员:成员变量:可以是常量,也可以是变量。
                                   成员方法:可以是抽象的,也可以是非抽象的。
                                   构造方法:虽然不可以创建对象,但是可以给子类实例化用。
                   接口中的成员:成员变量:只能是常量。默认修饰符 public static final
                                 成员方法:只能是抽象的。默认修饰符 public abstract
                C:抽象类中定义的是体系结构中的共性的内容。
                   接口中定义的是对象的扩展功能。
                D:抽象类被继承表示的是:"is a"的关系。xx是yy中的一种。
                   接口被实现表示的是: "like a"的关系。xx像yy中的一种。
作者: 于陈    时间: 2012-5-12 22:15
于陈 发表于 2012-5-12 21:32
1.有抽象方法的类必须是抽象类,而抽象类里面不一定要有抽象方法。
2.接口可以理解为一种抽象得更加彻底的 ...

不好意思啊~我确实错了,是接口里面的变量默认static final的静态常量,接口里的方法是默认public abstract




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2