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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 16463535 于 2013-4-14 00:35 编辑

abstract class和interface有什么区别?(抽象类与接口的区别)

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

5 个回复

倒序浏览
abstract class中可以含有非抽象方法,而interface中的方法全部是抽象的。
回复 使用道具 举报
抽象类可以有实现(包括构造函数),而接口不可以有任何实现。
重要的是抽象类可以包括抽象方法,这是普通类所不能的。
抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
接口中所有方法都必须是未实现的。

抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;
而接口中不能有成员变量、常量、静态方法,只能有公共的属性。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
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。  

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
1 抽象类与接口比较
抽象类和接口都是只能创建引用,而不能创建实例对象!
使用它们的引用是用来指向子类对象或实现类对象的。

接口可以实现多个,即多实现!而抽象类也是类,只能继承一个类,这是单继承!
抽象类中可以包含属性、方法,等等一切,也可以包含抽象方法,但接口中只能包含两种东西,常量和抽象方法,并且常量是public static final的,需要立即赋值,方法是public abstract的。
实现接口需要使用implements。而继承父类需要使用extends!

2 是使用抽象类还是使用接口
使用接口!
当你发现,你使用的接口中需要有属性,或者需要有非抽象的方法时,那么就改成抽象类吧!

当使用抽象类时,发现它不需要有属性,而且还都是抽象方法时,那么使用接口吧!

评分

参与人数 1技术分 +3 收起 理由
滔哥 + 3

查看全部评分

回复 使用道具 举报
抽象类与接口的区别:
A:成员不同
抽象类
成员变量:
在抽象类里面,可以是变量,也可以是常量
成员方法:
在抽象类里面,方法可以是抽象的,也可以是非抽象的。
构造方法:
可以有构造方法
接口:
成员变量:
在接口里面,只有常量
原因:接口中的成员变量都有默认修饰符
public static final
成员方法:
在接口里面,只有抽象方法
原因:接口中的成员方法都有默认修饰符
                                                        public abstract

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

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