Java 不使用任何抽象方法的抽象类的使用
抽象类不需要包含任何抽象方法 除了不能实例化抽象类之外,还有其他原因使类抽象吗?您可以使类抽象,即使您不想实现该类实现的所有接口方法。 根据java 需要注意的是,实现接口的类必须实现接口的所有方法。但是,如果类被声明为抽象类,则可以定义一个不实现所有接口方法的类Java 不使用任何抽象方法的抽象类的使用,java,abstract-class,abstract,Java,Abstract Class,Abstract,抽象类不需要包含任何抽象方法 除了不能实例化抽象类之外,还有其他原因使类抽象吗?您可以使类抽象,即使您不想实现该类实现的所有接口方法。 根据java 需要注意的是,实现接口的类必须实现接口的所有方法。但是,如果类被声明为抽象类,则可以定义一个不实现所有接口方法的类 无论如何,您都不能实例化一个用abstract声明的类。可能不行。它将阻止“静态助手”类被实例化,但我认为以这种方式使用它将是一种糟糕的风格 正如其他人所说,如果它打算成为一个基类——其后代声明并实现接口/功能,这对于超类来说太具体了
无论如何,您都不能实例化一个用abstract声明的类。可能不行。它将阻止“静态助手”类被实例化,但我认为以这种方式使用它将是一种糟糕的风格 正如其他人所说,如果它打算成为一个基类——其后代声明并实现接口/功能,这对于超类来说太具体了——那么
abstract
在超类中可能是合适的
在这种情况下,它是一种声明,表示super本身没有用处,子类将做更多的事情——它们将专门声明。抽象类意味着类的定义不完整,因此无法实例化。尽管它没有抽象方法,但它是一个指示器,表明该类可用于继承。即使它对其中的所有方法都有实现,但实现可能仍然不完整,必须被扩展类覆盖。抽象类的主要作用是提供一个合适的根类,从中可以派生具体的(即非抽象的)子类。这是一个功能强大、用途广泛的特性,可促进代码重用。抽象类封装了一系列数据类型所共有的通用特性,这些特性过于通用,在抽象类中没有意义,但可以在子类中重写 任何具有抽象方法的类都会自动抽象自身,并且必须使用关键字abstract来定义自身——有趣的是,抽象类不需要包含任何抽象方法 抽象类不能被实例化——换句话说,您不能创建抽象类的实例(对象) 即使抽象类的对象不能实例化,也可以声明对抽象类对象的引用,例如帐户a;不会生成语法错误 如果抽象类的子类重写,即提供其超类中每个抽象方法的实现,则该子类称为具体类,并且可以创建该子类的对象
如果抽象类的子类没有覆盖(实现)它继承的所有抽象方法,则该子类本身也是抽象的,必须声明为抽象的,非抽象类中不能有抽象函数强> 因此,如果出于任何原因需要在类中使用抽象函数,则必须将类声明为抽象的 为什么我需要一个抽象函数 如果抽象类可能不包含任何抽象方法。 除了抽象类不能被实例化之外,还有其他原因使类抽象吗 至于你的问题,我能想到的一种情况如下: 假设您只需要类的静态功能。静态变量和函数。所以 基本上,您不希望用户创建类的任何实例。现在你可以做你的 构造函数private,从而排除了创建其实例的可能性,但您没有这样做 我也不想那样做。为什么要编写额外的代码行?在这种情况下,可以将类抽象化
我从中摘录了以下几点
抽象类充当其子类的模板。例如,抽象类树和子类Banyan_树具有树的所有特征以及特定于Banyan树的特征 理解抽象类和接口之间的差异至关重要。接口只有方法声明或抽象方法和常量数据成员,而抽象类可以有抽象方法、成员变量和具体方法。由于Java只支持单一继承,一个类可以实现多个接口,但只能扩展一个抽象类。密切相关: