黑马程序员技术交流社区

标题: abstract class和interface有什么区别 [打印本页]

作者: 贾波    时间: 2013-11-28 10:29
标题: abstract class和interface有什么区别
abstract class和interface有什么区别
作者: mayor125    时间: 2013-11-28 10:48
abstract:抽象。
1、抽象类一定包含抽象方法。
2、抽象类中的抽象方法只需声明而不需要实现。
3、抽象类必须要被继承,且子类必须要覆写抽象类中的全部抽象方法。

interface:接口。
1、接口由全局常量和公共的抽象方法组成。
2、接口中的抽象方法必须,且只能是public权限。
3、接口可以通过implements关键字实现。



作者: cuilitang    时间: 2013-11-28 11:40
概念性的不说,都是抽象出来的对吧。
应用上最大的区别就是,一个是单继承,父子关系。
一个是多实现,只要某一方面的特性符合接口的规范就可以实现。
作者: 胡陈思    时间: 2013-11-28 12:18
概念我想不用说了吧,直接比较区别:
1.方法
        抽象类:可以有抽象方法,也可以有非抽象方法;甚至没有抽象方法也行,但那样只是为了不让这个类被实例化。
        接口:接口中的方法必须都是抽象的
        例:
  1. public abstract class Demo
  2.         {
  3.                 public abstract show();
  4.                
  5.                 public void run()
  6.                 {
  7.                         System.out.println("跑起来");
  8.                 }
  9.         }

  10.         public interface Demo
  11.         {
  12.                 public abstract show();
  13.                 public abstract run();

  14.          }
复制代码




2.成员变量
        抽象类:可以有普通成员变量
        接口:没有普通成员变量,接口中的成员变量实际上是被final的常量

3.构造方法
        抽象类:可以有构造方法
        接口:不可以有构造方法--因为接口中方法都是抽象的,构造方法需要方法体,即使是空方法体。

4.修饰符
        抽象类:抽象类中的抽象方法的访问类型可以是public,protected
        接口:接口中的抽象方法默认为public abstract。

5.继承和实现
        一个类只能集成一个抽象类,但可以实现多个接口



作者: lovecx24    时间: 2013-11-29 15:50
我再补充一下吧 接口中不能有构造方法,抽象类中有构造方法,至于为什么:构造器是属于类自己的,不能继承。因为是纯虚的,所以接口不需要构造器。




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