黑马程序员技术交流社区
标题:
abstract class和interface有什么区别?(抽象类与接口的区别)
[打印本页]
作者:
16463535
时间:
2013-4-13 14:56
标题:
abstract class和interface有什么区别?(抽象类与接口的区别)
本帖最后由 16463535 于 2013-4-14 00:35 编辑
abstract class和interface有什么区别?(抽象类与接口的区别)
作者:
黑马_位志国
时间:
2013-4-13 15:03
abstract class中可以含有非抽象方法,而interface中的方法全部是抽象的。
作者:
殇_心。
时间:
2013-4-13 15:20
抽象类可以有实现(包括构造函数),而接口不可以有任何实现。
重要的是抽象类可以包括抽象方法,这是普通类所不能的。
抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
接口中所有方法都必须是未实现的。
抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;
而接口中不能有成员变量、常量、静态方法,只能有公共的属性。
作者:
huima
时间:
2013-4-13 15:53
java语言对于abstract class和interface给出了不同的定义方式,下面以定义一个名为Demo的抽象类为例来说明这种不同。
使用abstract class的方式定义Demo抽象类的方式如下:
abstract class Demo {
abstract void method1();
abstract void method2();
…
}
使用interface的方式定义Demo抽象类的方式如下:
interface Demo {
void method1();
void method2();
…
}
在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的abstract class。
作者:
zhuiyi0819
时间:
2013-4-13 22:56
1 抽象类与接口比较
抽象类和接口都是只能创建引用,而不能创建实例对象!
使用它们的引用是用来指向子类对象或实现类对象的。
接口可以实现多个,即多实现!而抽象类也是类,只能继承一个类,这是单继承!
抽象类中可以包含属性、方法,等等一切,也可以包含抽象方法,但接口中只能包含两种东西,常量和抽象方法,并且常量是public static final的,需要立即赋值,方法是public abstract的。
实现接口需要使用implements。而继承父类需要使用extends!
2 是使用抽象类还是使用接口
使用接口!
当你发现,你使用的接口中需要有属性,或者需要有非抽象的方法时,那么就改成抽象类吧!
当使用抽象类时,发现它不需要有属性,而且还都是抽象方法时,那么使用接口吧!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2