抽象类与接口的区别是什么

首先来看看接口的定义:接口,在JAVA编程语言中是一个抽象类型,主要是抽象方法的集合,接口中的变量定义必须为public static final类型。接口通常以interface来声明。

抽象类: 从面向对象的角度来讲,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样,并不是 所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就可以认为是抽象类。。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。

从定义角度来看,接口和抽象类是两个几乎没有太多联系的设计。接口只是一个抽象方法的集合。而抽象类本质上是一个类,但是它不能被实例化,但是类具备的大多特性抽象类都有。抽象类和interface在Java语言中都是用来进行抽象的,他们除了都是一个用于抽象的东西之外几乎没有任何相同之处。事实上对于一个java里的类来说,无外乎由两种成分组成,即变量和方法(静态代码块可以写在类里面但从实际效果角度并没有影响一个类)。因此接口的功能仅仅包含其中一部分,即方法的集合以及一部分静态成员变量。这样来看,接口是一种非常高的抽象,里面定义的东西被认为是不会改变的。抽象类里面就可以定义普通的成员变量,抽象类的抽象程度相对接口来说会低一点。

但是对于java来说个人认为设计接口的最大原因是为了支持多继承,从这个角度来说,抽象类和接口最重要的区别应该是在使用的时候的区别:

猜你喜欢

转载自www.cnblogs.com/luvky2001/p/11211109.html