抽象类与继承
抽象类和继承是许多面向对象编程语言(如Java)中的两个重要的面向对象概念。抽象类可以看作是常规(具体)类的抽象版本,而继承允许新类扩展其他类。抽象类是一个不能初始化但可以扩展的类。因此,抽象类只有在编程语言支持继承的情况下才有意义。在Java中,抽象类使用Abstract关键字声明,而Extends关键字用于从(超级)类继承。
什么是抽象类?
通常,抽象类,也称为抽象基类(ABC),不能实例化(不能创建该类的实例)。因此,只有当编程语言支持继承(通过扩展类创建子类的能力)时,抽象类才有意义。抽象类通常表示一个抽象的概念或实体,有部分实现或没有实现。因此,抽象类充当从中派生子类的父类,这样子类将共享父类的不完整特性,并且可以添加功能来完成它们。
抽象类可以包含抽象方法。扩展抽象类的子类可以实现这些(继承的)抽象方法。如果子类实现了所有这样的抽象方法,那么它就是一个具体类。但如果不是这样,子类也会变成抽象类。所有这一切意味着,当程序员指定一个类作为一个抽象类时,她是说这个类将是不完整的,它将有需要继承子类完成的元素。这是在两个程序员之间创建契约的好方法,它简化了软件开发中的任务。编写代码来继承的程序员需要严格遵循方法定义(当然也可以有自己的实现)。
什么是继承?
继承是一个面向对象的概念,它允许新类扩展其他类。Extends关键字用于实现Java编程语言中的继承概念。继承本质上通过允许通过新定义的类扩展现有类的属性和行为来提供代码重用。当一个新的子类(或派生类)扩展一个超类(或父类)时,该子类将继承该超类的所有属性和方法。子类可以选择性地重写从父类继承的行为(为方法提供新的或扩展的功能)。通常,一个子类不能扩展多个超类(例如在Java中)。因此,不能将扩展用于多重继承。为了有多重继承,你需要使用接口。
抽象类和继承有什么区别?