文章目录
抽象类
- 抽象类
- Java抽象类
- C++抽象类
- 模板模式
抽象类是一种特殊的类,其特殊性在于抽象类只能用于继承,不能被实例化为具体的对象。
抽象类存在的合理性在于某些场景下普通类不够用。
从设计的角度来看,抽象类是更高层次的抽象;从实现的角度来看,抽象类有的存在抽象方法(方法只有声明没有实现),子类必须自己实现这些抽象方法。
抽象类与接口有一定的区别。 抽象类本质还是类,强调一组事物的相似性,包括属性和方法的相似性;而接口只强调方法的相似性,并且仅仅体现在方法声明上的相似性,而没有方法定义上的相似性。
抽象类是一个介于类和接口之间的概念,同时具备类和接口的部分特性。
Java抽象类Java的抽象类和抽象方法必须用abstract定义,有抽象方法的类只能被定义成抽象类,抽象类里也可以没有抽象方法。
抽象类必须使用abstract来修饰,抽象方法也必须使用abstract来修饰,抽象方法不能有方法体。
抽象类不能被实例化,无法使用new关键词来调用抽象类的构造方法创建抽象类的实例。即时抽象类里没有抽象方法,这个抽象类也不能创建实例。
抽象类可以包含成员变量、方法、构造方法、初始化块、内部类。抽象类的构造方法不能用于创建实例,主要用于被其子类调用。