Java抽象类教程与示例| Java中的抽象类


Java抽象类教程与示例| Java中的抽象类是今天的主题。在C ++编程语言中,为了使类抽象,我们需要在该类中声明一个纯虚函数。但在Java中,它是不同的。要构建一个虚拟类,该类中至少应该有一个抽象方法。为了使任何方法抽象,有一个关键字“抽象”。

内容概述

  • 1 Java抽象类教程与示例
  • 2为什么我们需要一个抽象类
  • 3 Java中的抽象方法
    • 3.1语法
  • 4如何在Java中声明Abstract类
    • 4.1语法
    • 4.2为什么我们不能创建抽象类的对象
  • 5抽象类和具体类之间的区别
  • 6接口和抽象类之间的区别
  • Java抽象类的7个要点

Java抽象类教程与示例

使用“abstract”关键字声明的类称为抽象类。它可以有抽象的方法(没有身体的方法)以及具体的方法(带有身体的传统方法)。标准类(非抽象类)不能具有抽象方法。在本指南中,我们将了解抽象类是什么,为什么我们使用抽象类,具体类,以及在Java中使用抽象类时必须记住的规则。

为什么我们需要一个抽象类

假设我们有一个名为Document的类,它有一个方法格式()。现在它的子类(参见继承)类似于PDF类,Word类和CSV类。由于Document类从一种格式到另一种格式不同,因此没有必要在父类中实现此方法。这是因为每个子类都必须覆盖format()方法以赋予其实现细节,例如PDF类将输出“pdf”内容,而CSV类将输出“csv”。

因此,当我们知道如果所有Document的子类都将覆盖format()方法,那么在父类中实现此方法是没有意义的。这就是为什么使format()方法抽象是一个很好的选择,因为通过使这个方法抽象我们强制所有的子类来实现format()方法(否则你会得到编译错误);我们也不需要在父类中给这个方法任何实现。

Java中的抽象方法

现在的问题是抽象方法是什么?在抽象类中,可以有一个方法在该类中没有实现,然后该方法被称为抽象方法。抽象方法的声明以分号而不是块结尾。请参阅Java Abstract Method的以下语法。

现在,让我们看一些抽象方法的基础知识和示例。

1)抽象方法没有正文意味着它是一个没有正文陈述的方法。
2)始终以分号(;)结束方法声明。
3)必须覆盖它。必须扩展抽象类,并且必须以相同的方式覆盖抽象方法。
4)必须将类声明为具有抽象方法的抽象。具体类没有任何抽象方法。

句法

abstract return_type fuction_name();

将不再有代码块。

如何在Java中声明一个Abstract类

现在学习如何声明一个抽象类。请参阅以下语法。

句法

abstract class class_name {//抽象方法//方法//变量}

现在,如果您要实现一个抽象类,需要记住一些基本要点:

抽象类是无法创建其实例的类。

让我们借助一个例子来理解这一点。

// AbstractExample.java //声明抽象类抽象类App {// decaring abstaract方法abstract void welcome(); // decalring normal method void great(){System.out.println(“大家好,希望你们都做得很好”);创建一个普通的类来访问抽象类类Dividend extends App {//覆盖抽象类的方法void welcome(){System.out.println(“Welcome to AppDividend”); class AbstractExample {public static void main(String()er){App app = new App(); }}

见下面的输出。

Java抽象类教程与示例

在上面的例子中,它显示的错误信息是我们无法实例化App类,因为它是一个抽象类。

为什么我们不能创建抽象类的对象

我们不能创建抽象类的对象,因为抽象类是不完整的,并且它们具有没有实体的抽象方法意味着它没有主体的方法。

因此,如果Java编译器允许我们创建抽象类的对象,并且如果有人使用该对象调用抽象方法那么会发生什么?调用抽象方法没有实际的实现。
此外,因为对象是具体的,抽象类就像模板一样,所以在使用它或创建对象之前,必须对其进行扩展和构建。

这就是抽象类无法实现的原因。

如果我们想要解决这个问题,我们需要声明另一个必须扩展App类的类,然后我们可以通过子类轻松访问。

请参阅以下代码。

// AbstractExample.java //声明抽象类抽象类App {// decaring abstaract方法abstract void welcome(); // decalring normal method void great(){System.out.println(“大家好,希望你们都做得很好”);创建一个普通的类来访问抽象类类Dividend extends App {//覆盖抽象类的方法void welcome(){System.out.println(“Welcome to AppDividend”); class AbstractExample {public static void main(String()er){/ * App app = new App(); * / //我们不能声明这个Dividend d = new Dividend(); d.welcome(); d.great(); }}

见下面的输出。

Java中的抽象类

纠正此输出后将是:

  1. 任何具有至少一个抽象方法的类都必须将该类声明为抽象类。
  2. 抽象类可以包含抽象和非抽象方法。
  3. 如果类扩展了抽象类,那么应该在子类中重写所有抽象方法。
  4. 它也可以有Constructor。

现在,请参阅以下代码。

// TestConstructor.java //创建一个抽象类抽象类Hero {// constructor Hero(){System.out.println(“Hero has be Created ...”); } //抽象方法abstract void power(); }类Ironman扩展了Hero {// overriding void power(){System.out.println(“Power已经给IronMan”); } void fly(){System.out.println(“Ironman飞行......”); class TestConstructor {public static void main(String()er){Hero h = new Ironman(); h.power(); // h.fly(); }}

请参阅以下输出。

Java教程中的抽象类

抽象类和具体类之间的区别

不抽象的类称为Concrete类。具体类具有其属性和方法实现。如果我们以Document和PDF,Word和CSV类为例,则Document是Abstract类,PDF,CSV和Word是Concrete类。

具体类在Java中实现Abstract类的方法。如果在Abstract类中定义方法abstract,那么扩展抽象类的具体类必须实现这些方法。

接口和抽象类之间的区别

请参阅Java接口和Java抽象类之间的以下差异。

抽象类 接口
1)为了使类抽象,我们必须使用关键字abstract。 1)要声明一个接口,我们需要关键字接口
2)它既可以有抽象也可以有非抽象方法。 2)默认情况下,Interface的每个方法都是抽象方法。
3)使用extends关键字扩展抽象类。 3)Interface使用implements关键字扩展。
4)抽象类可以有一个像public,private,protected等成员。 4)界面中的所有成员默认为public
5)它不支持多重继承。 5)它支持多重继承。
6)它具有静态,非静态,最终,非最终变量。 6)它只有静态和最终变量。
7)语法:

抽象类英雄{

abstract void power();

}

7)语法:

界面英雄{

void power();

}

现在让我们看看真正的单词问题。

请参阅以下代码。

// Auto.java //抽象类抽象类Vehicle {//// abstract method abstract void name(); //非抽象方法int milage(int a){return a; class Bike extends Vehicle {//覆盖方法void name(){System.out.println(“Vehicle name:Bike”); class Car extends Vehicle {//覆盖方法void name(){System.out.println(“Vehicle name:Car”); class Auto {public static void main(String()er){Bike b = new Bike(); //为Bike Car创建实例c = new Car(); //为Car b.name()创建实例; System.out.println(“自行车的Milage”+ + b.milage(50)+“KMPL”); c.name(); System.out.println(“Milage of Car is”+ c.milage(25)+“KMPL”); }}

见下面的输出。

Java中的抽象类与示例

Java抽象类的要点

  1. 除非某些其他类扩展它,否则抽象类没有用处。
  2. 如果在类中声明抽象方法,那么您也必须声明类抽象。具体类中不能有抽象方法。反之亦然并非总是如此:如果类没有任何抽象方法,那么它也可以标记为抽象。
  3. 它也可以有一个非抽象的方法(具体)。
  4. 抽象类没有必要使用抽象方法。我们可以将类标记为抽象,即使它没有声明任何抽象方法。
  5. 除非子类也是抽象类,否则java中抽象类的子类必须实现所有抽象方法。
  6. Java Abstract类可以实现接口,甚至不提供接口方法的实现。
  7. Java Abstract类用于为所有子类提供公共方法实现或提供默认实现。
  8. 如果它有一个main()方法,我们可以在java中运行一个抽象类,就像任何其他类一样。

最后,Java Abstract Class Tutorial With Example | Java文章中的抽象类已经结束了。

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Ankit Lathiya所有,未经许可,不得转载
你可能还喜欢