黑马程序员技术交流社区

标题: 抽象类和接口的区别是什么啊?一直很迷茫 [打印本页]

作者: 张学东    时间: 2012-10-8 12:15
标题: 抽象类和接口的区别是什么啊?一直很迷茫
抽象类和接口的区别是什么啊?一直很迷茫
作者: 王虎    时间: 2012-10-8 13:19
抽象类与接口的区别:
                          1.类与抽象类之间存在的是继承关系,并且是一种单继承
                             类与接口之间存在的是实现关系,可以多实现
                          2.抽象类是继承,也就是说父类中定义的是子类中公共的行为
                             接口是实现 ,也就是接口中定义的是子类的扩展功能
                          3.抽象类中有抽象方法,也可以存在实例方法,可以让子类直接使用
                             接口中都是抽象的方法,要想使用,只能去做个实现类去实现接口,使用实现类中的方法。


作者: 王震阳老师    时间: 2012-10-8 14:06
抽象类和接口的共同点:
1.接口和抽象类都不能被实例化,他们都位于继承的最顶端,用于被其他类继承或实现。
2.他们都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
上面是两者的共同点,那么我主要说一下主要的区别。
1.首先既然既有接口又有抽象类,他们的设计目的肯定是不一样的。
接口体现的是一种规范,对于接口的实现类而言,接口规定了实现着必须要向外提供哪些功能。接口是多个程序模版间的耦合标准。
而抽象类作为系统中多个子类的共同父类,体现的是一种模版式设计。抽象类作为多个子类的父类,可以被对当成系统实现过程中的中间产品,而且这个中间产品已经实现了部分功能,但是还需要进一步的完善。
2.在使用方法上,两者的不同之处。
接口里只能包含抽象方法。抽象类则既可以包含普通方法也可以包含抽象方法。
接口里不能定义静态方法(或者叫类方法),但是抽象类可以。
接口里只能定义静态(或者类)Fields,但是抽象类则既可以定义类fields也可以定义成员fields。
接口没有构造器,但是抽象类有,同时,抽象类里的构造器并不是让用于创建对象,而是供子类调用来完成子类的构造。
接口里不能包含初始化块,但是抽象类则可以。
一个类可以实现多个接口,但是最多只能有一个抽象父类。同时我们也可以看到接口在一定程度上弥补java不能多继承的缺点。

上面的东西是本人的理解,希望对你有帮助。
作者: 徐传任    时间: 2012-10-9 00:15
看看..........顶




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