我们把一类事物抽象出来,类中只声明方法,不实现,这就是抽象类存在的意义;
抽象类: 含有抽象方法的类,被abstract 关键字修饰;
抽象方法:只有方法声明没有方法实体,被abstract关键字修饰;
注意要点:
1、抽象类没有实例对象,只能通过别的类继承实现抽象方法;
2、抽象类可以含有普通方法,但是只要包含一个抽象方法,此类就是抽象类;
3、抽象方法需要通过继承来实现,所以抽象方法不能被private关键字所修饰;
4、继承了抽象类的类必须实现抽象类里面提供的所有抽象方法,不然这个子类依然是一个抽象类,需要被abstract所修饰;
5、一个子类只能继承一个抽象类;
[public] abstract class ClassName{ //定义了一个抽象类
public abstract void fun(); //声明一个抽象方法
}
C++中
而在c++中的抽象类是特殊的类,只是不能被实例化(将定义了一个或多个纯虚函数的类称为抽象类);除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的,但同时也能包括普通的方法。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。虽然不能定义抽象类的实例,但是可以定义它的指针,并且指向抽象类的指针实际上在赋值时是指向其继承类的实例化对象的,这样通过统一的使用该指针可以很好的封装不同子类的实现过程,这在模式设计的过程中得到了极大的应用!
Java中的抽象、接口、Final修饰类与C++中抽象类和接口区别的概念解析
原文:https://www.cnblogs.com/hellogiao1/p/14899129.html