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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 疯狂程序 中级黑马   /  2013-3-21 11:06  /  1342 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

抽象类与接口有啥不同啊

点评

再次提醒:记得及时处理帖子哦,继续追问,或将分类改成【已解决】,谢谢  发表于 2013-3-23 08:32

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
1:抽象类只能被单继承
接口可以多实现,接口的出现避免了多继承的局限性。
2:抽象类中的数据特点:
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法
构造方法:有构造方法
接口中的数据特点:
成员变量:是常量。默认修饰 public static final
成员方法:都是抽象方法。都有默认修饰 public abstract
构造方法:没有构造方法
3:抽象类中定义的是继承体系中的共性功能。
接口中定义的是继承体系中的扩展功能。
4:抽象类被继承是"is a"关系:xx是yy的一种
接口被实现是"like a"关系:xx像yy的一种

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
通俗的说,抽象类里可以有抽象和非抽象方法,但接口里全是抽象方法,还有就是继承只能单一继承了,而接口可以继承接口,而且可多重继承,

这样相比继承的单一局限性,接口扩展性更强。当然了,定义接口后,接口里的成员变量,和成员方法都是固定的,如果修饰符未写,会自动补上的。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 恭喜25分~

查看全部评分

回复 使用道具 举报
抽象类中可以有实例方法和变量,但是接口中的方法全部都要是实例方法,而且接口当中不允许存在变量,都是常量,换句话说,接口是纯粹彻底的抽象类

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
1.类只能单继承,接口可以多实现(一个类只有一个直接父类,但可以实现多个接口);
2.被abstract修饰的抽象类不能实例化,只能作为其他类的超类(即作用是用来被子类继承的),如
  abstract class demo() {
        属性定义;
     //构造方法,不能用abstract 修饰;
     方法定义 = 抽象方法(抽象类必须要有的) +非抽象方法(不是必须的);
}
接口 public interface 接口名 //(extends 父接口)
{
     public static final 常量名 ; //静态常量名
   public abstract 返回类型 方法名 (// 参数列表)  // 抽象方法说明
},是很多子类抽取的共性的抽象概念

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
有问题继续追问; 没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
含有抽象方法(abstract)的类焦作抽象类,抽象类为他的导出类提供了一个公共接口,不同的子类可以用不同的法方法表示接口。如果从一个抽象类继承,并想创建该新类
对象时,那么就必须为基类提供的抽象方法的具体实现,如果不这样做就道出了一个抽象类,编译器会强制我们用abstract关键字来限定这个类。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

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