Java中的抽象类和方法[附例子]

已发表: 2021-06-18

下面的文章将讨论 Java 中抽象的属性以及如何通过抽象类和抽象方法来实现它。 我们将探索java中抽象类和接口的特性。

目录

抽象

Java 的重要概念之一是抽象。 它是仅向用户显示程序的重要细节的属性。 所有非必要部分都被隐藏起来。 这个过程可以通过电子邮件的例子来解释。 发件人发送一封电子邮件,该电子邮件将发送给收件人。 发件人唯一知道的信息是电子邮件已发送。 发送电子邮件的后台进程对用户是隐藏的。 类似的是面向对象编程 (OOP) 中的过程,其中向用户显示基本元素,而隐藏非基本部分。 用户没有关于实现过程的信息,但只有功能是已知的。 这种机制被称为抽象,其中仅显示对象的基本特征而忽略其他特征。

在Java中,抽象是通过抽象类和接口来实现的。

Java中的抽象类

关键字“abstract”用于 Java 中的抽象类和方法。 抽象类在其声明中具有 abstract 关键字。

Java 抽象类的语法是:

抽象类 class_name

{

公共抽象无效 the_abstractMethod();

公共无效 the_normalMethod()

{

#方法体

}

}

上面的语法表明,普通方法和抽象方法都可以包含在抽象类中。

抽象类的一些属性是:

  • Java 抽象类中可能存在也可能不存在抽象方法
  • 类中至少存在一个抽象方法使该类成为抽象类。
  • 抽象类不能有任何对象,因此不能直接实例化。
  • 只有从另一个类继承并实现抽象方法的抽象类才能使用。
  • 继承抽象类时需要正确实现抽象方法。
  • 常规方法和抽象方法都可以出现在Java 抽象类中。
  • 参数化构造函数可能存在于抽象类中。 此外,抽象类总是包含一个默认构造函数。

抽象方法

抽象方法是那些不需要实现其声明的方法类型。 这些方法没有主体,这意味着没有实现。 抽象方法的一些属性是:

  • Java中抽象方法是通过关键字“abstract”声明的。
  • 在声明抽象方法时,抽象关键字必须放在方法名称之前。
  • 抽象方法中没有主体,只有方法的签名存在。
  • Java中抽象方法没有花括号,但方法的末尾会有分号 (;)

抽象双方法(双 n1,双 n2);

  • 任何包含抽象方法的类都应该声明为抽象类。 尽管相反的情况可能并非如此,即抽象类没有必要具有抽象方法。
  • 普通类继承抽象类需要实现父类中的所有抽象方法。

抽象方法的示例

公共抽象类 Car

{

私有字符串模型;

私有字符串颜色;

私人 int 年;

公共抽象双计算价格();

}

如果派生类不实现抽象方法,则会导致无法实例化的抽象类。

一些不能与 Java 中的 abstract 关键字一起使用。

  • 最终的
  • 抽象的本地人
  • 抽象静态
  • 抽象私有
  • 抽象同步
  • 抽象严格

下面显示了在 Java 中使用抽象方法的代码

资源

代码的输出是:

Java 接口

除了抽象类和抽象方法之外,Java 还使用接口来实现抽象。 当相关的方法组合成一个空体时,就称为接口。 接口类似于抽象类,因为它是抽象方法的分组。 当一个类实现接口时,接口内的所有抽象方法都会被继承。 该接口还可能包含默认方法、常量和静态方法。 仅存在默认方法和静态方法的方法体。 继承和类可以用类似的方式编写,但类可以描述对象的属性和行为。 虽然在接口的情况下只存在对象的那些行为,但这些行为是由类实现的。

一个类必须定义它实现的接口的所有方法。 仅对于抽象类,方法不需要由类定义。

接口在以下方面类似于Java 抽象类:

  • 一个接口中可以包含任意数量的方法。
  • .java 扩展名用于在文件中编写接口。 文件名应与接口名匹配。
  • .class 文件包含接口的字节码。
  • 接口出现在包中。 接口的字节码文件存在于与包名同名的目录中。

接口在以下方面不同于Java 抽象类:

  • 接口无法实例化。
  • 接口中没有构造函数。
  • 该接口仅包含抽象方法。
  • 接口中不存在实例字段。 如果字段必须出现在界面中,则必须将其声明为静态和最终字段。
  • 只有类可以实现接口,但不能扩展。
  • 一个接口可以扩展多个接口。

从世界顶级大学在线学习软件课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

接口的属性

  • 不需要通过abstract关键字将接口声明为抽象,因为它是隐式抽象的。
  • 抽象关键字不需要将方法声明为抽象,因为它们是隐式抽象的。
  • 接口中的所有方法都是隐式公开的。

如何声明一个接口?

关键字“interface”用于声明接口。 完全抽象是通过使用接口来提供的。 默认情况下,接口中的所有方法都是抽象的和公共的。 这意味着接口中没有任何方法,所有字段都是静态的、公共的和最终的。

接口语法:

接口名称_of_the_interface {

# 声明字段

# 声明抽象方法

}

例如界面播放器

{

最终整数年龄 = 40;

整数计算();

}

如何实现一个接口?

要实现接口,使用关键字“ implements” 一个类可以实现多个接口。 在这种情况下,关键字“ implements”后跟一个用逗号分隔的接口列表。 关键字在类声明中使用。

实现该接口的示例如下所示:

Maruti 类实现 Car

下面显示了一个显示 Java 接口实现的代码示例。

资源

该代码生成以下输出:

应用多个接口实现的代码如下所示。

资源

该代码生成以下输出:

一些文字…

其他一些文字…

为什么使用接口?

  • 接口用于实现完全抽象。
  • Java中的多重继承可以通过使用继承来实现,因为Java不支持多重继承。
  • 松散耦合可以通过使用接口来实现。
  • 通过使用java中的实现抽象可以实现。

尽管 Java中的抽象可以通过Java 抽象类来实现,但使用接口是因为它们包含最终、公共和静态变量。 但是,非最终变量可能存在于抽象类中。

如果同时使用Java接口和Java抽象类来实现抽象,那么什么时候应该使用接口和抽象类呢?

  • 当用户需要为一组子类定义模板时,使用抽象类。
  • 当用户需要为其他类定义角色时使用接口。

抽象的一些优点是:

  • 程序的复杂性降低了。
  • 代码重复的可能性较小,从而提高了可重用性。
  • 通过使用抽象来提高程序的安全性,因为只向用户提供了一些细节。

结论

本文讨论了 Java 中抽象的详细概念,这是一种向用户隐藏非必要信息的技术。 在Java中,抽象是通过抽象类和接口来实现的。 接口提供 100% 的抽象,而抽象类提供部分抽象。 文章进一步提到了何时使用接口以及何时应该使用抽象类。 它还列出了接口与Java抽象类的相似之处以及不同之处。 如果没有这两个概念的必要知识,将导致代码充满缺陷。

如果您有兴趣了解更多并在实际问题中实施这些概念,您可以查看由利物浦约翰摩尔斯大学认可的upGradIIIT-Bangalore提供的计算机科学硕士课程。 该课程专为入门级专业人士(21-45 岁)设计,提供来自领先行业专家和软件工程学院的 500 多个小时的培训。 更多课程详情可查看 upGrad 官方网页。

提升自己并为未来做好准备

从 IIIT-B 申请软件开发执行 PG 计划