黑马程序员技术交流社区
标题:
问一下抽象类的问题
[打印本页]
作者:
盖保宁
时间:
2011-9-26 14:32
标题:
问一下抽象类的问题
一个类只要有一个抽象方法,就要用abstract定义该类,即抽象类。
而interface修饰的类,里面的方法都是抽象方法。
那么接口和抽象类的使用范围有什么不同?
为什么java既要有抽象类又要有接口呢
作者:
匿名
时间:
2011-9-26 14:47
抽象类中有抽象方法,需要继承它的类去重写。
接口中的所有方法必须是抽象方法,由实现它的类重写。
java是单继承,多实现的机制,如果你已经继承了一个类,还需要继承其他类,不妨去实现接口来的灵活
作者:
匿名
时间:
2011-9-26 15:03
感觉接口没有继承一个类灵活啊,继承多个接口与C++的多继承有什么区别么,为什么要这么用呢
作者:
匿名
时间:
2011-9-26 15:19
先说一下他们在设计思想上的区别:在java中,抽象类和具体实现类之间是一种继承关系,也就是说如果采用抽象类的方式,则父类和子类在概念上应该是相同的,但接口却不一样,如果采用接口的方式,则父类和子类在概念上不要求相同,接口只是抽取相互之间没有关系的类的共同特征,而不去关注类之间的关系,它可以使没有层次关系的类具有相同的行为。如果我们只关注一个事物有什么功能,而不去关注它是具体怎么实现的,就可以采用接口,分层开发中,用的最多就是面向接口开发,如果某个事物的功能具有延续性,子类有自己特有的一些功能属性,就可以采用抽象类设计。仅供参考啊。。。。。
作者:
匿名
时间:
2011-9-26 15:52
最主要的区别就是,单继承,多接口。
作者:
匿名
时间:
2011-9-26 15:59
接口我们用得比较多了,我想你是想问抽象类用在什么地方,
java就业大全里有详细的介绍:
模板方法设计模式是抽象类的一个典型应用
作者:
匿名
时间:
2011-9-26 19:28
我补充一点吧
抽象类可以有自己的 构造方法
而接口 不能有。
但是抽象类不能实例化。
作者:
匿名
时间:
2011-9-26 23:02
标题:
回复 楼主 的帖子
abstract类既可以有abstract方法,也可以有非abstract方法,但是接口不能有非abstract方法。
java使用接口是为了克服单继承性的缺点,一个类可以实现多个接口。
如果某个问题需要使用继承才能更好地解决,比如,子类除了需要实现父类的abstract方法,还需要从父类继承一些变量或者继承一些重要的非abstract方法,就可以考虑使用abstract类;如果某个问题不需要继承,只是需要若干个类给出某些重要的abstract方法的实现细节,就可以考虑使用接口。
这就是为什么java中既要有abstract类又要有接口。
作者:
匿名
时间:
2011-9-27 07:27
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,
接口中的所有方法必须是抽象方法
abstract class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。
但是,一个类却可以实现多个interface。也许,
这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。
作者:
匿名
时间:
2011-9-27 18:54
1,抽象类需要被继承,接口需要被实现
2,抽象类中可以抽象方法和非抽象方法,子类可以继承过来直接使用,接口中的方法全部是抽象方法,接口只能被子类实现。
3,抽象类只能单继承,接口可以多实现。
4,抽象类中定义的是一个体系中共性基本功能,接口 中定义的是扩展功能。
作者:
匿名
时间:
2011-9-27 20:09
标题:
抽象类
首先:抽象类也是一个类,那么它和普通的类有什么 差别呢??
抽象类是很多类向上抽取的一个结果
比如说 学生:有小学生 初中学生 大学生 那么他们的学习知识一样吗? 肯定是不一样的
但是他们都有相同的行为就是学习 不同的是他们学习的知识不一样 ,因此我们抽取他们的行为,只是方法的实现不一样,这样我,们就可以把它定义成一个抽象类,相比较方法有方法声明和方法体
抽象类就是了一个特殊的字符abstract 修饰的
抽象类是不能new对象的 如果它可以new一个对象 那么对象调用它的方法有意思吗?它方法是没方法体的!
如果一个类继承了抽象类 那么它要实现抽象类的方法,否则它也是一个抽象类 就相当于把抽象方法复制到改类中,因为抽象方法只存在抽象类!
接口就是特殊的抽象类 接口中只能定义方法!
抽象类不能new对象 还有抽象方法只存在抽象类中 好好理解这2点 抽象类和java普通类没什么差别!
作者:
匿名
时间:
2011-9-27 20:10
标题:
抽象类
首先:抽象类也是一个类,那么它和普通的类有什么 差别呢??
抽象类是很多类向上抽取的一个结果
比如说 学生:有小学生 初中学生 大学生 那么他们的学习知识一样吗? 肯定是不一样的
但是他们都有相同的行为就是学习 不同的是他们学习的知识不一样 ,因此我们抽取他们的行为,只是方法的实现不一样,这样我,们就可以把它定义成一个抽象类,相比较方法有方法声明和方法体
抽象类就是了一个特殊的字符abstract 修饰的
抽象类是不能new对象的 如果它可以new一个对象 那么对象调用它的方法有意思吗?它方法是没方法体的!
如果一个类继承了抽象类 那么它要实现抽象类的方法,否则它也是一个抽象类 就相当于把抽象方法复制到改类中,因为抽象方法只存在抽象类!
接口就是特殊的抽象类 接口中只能定义方法!
抽象类不能new对象 还有抽象方法只存在抽象类中 好好理解这2点 抽象类和java普通类没什么差别!
作者:
匿名
时间:
2011-9-28 00:15
那么接口和抽象类的使用范围有什么不同?
为什么java既要有抽象类又要有接口呢
接口主要是用于定义规范的,就像一个简单的系统,接口就像是一个系统的结构,而抽象类可以有自己的实现,就像一个半成品,有的功能自己已经实现,而其他的功能需要子类去完成. 这样的话代码可以有很大的重用因为公共的功能抽象类已经实现了,子类只需要完善其他的功能.
因为java是单继承的,如果一个类已经继承了抽象类,那么就不能继承其他类了,而接口不存在这样的问题
作者:
匿名
时间:
2011-9-29 17:37
标题:
抽象类与接口的不同!
抽象类其内部可以存在不抽象的方法,而接口内部的方法必须全部都是抽象的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2