抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
通常在编程语句中用abstract修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。
接口与抽象类的异同
相同点
1:都无法实例化。2.都可以包含抽象方法。3.都可以有静态方法(有方法体)
异同点
1.抽象类可以有成员方法的实现,而接口不能有成员方法的实现,只能声明,不能有方法体。
2.抽象类可以有成员变量,接口只有静态常量
3.在接口里面无法声明final级别的方法,而抽象类是可以的
4.抽象类里面的抽象方法必须自己显示写出来,而接口是缺省的,无需添加
5.类只能单根继承,接口可以多实现
6.接口所有的方法都是publicabstract,抽象类里面还可以有别的访问级别的方法
7.接口只能继承接口,类只能继承类
8.接口可以继续多个接口,类只能继承一个类
9.接口没有构造器,类有构造器
抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。