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抽象类的相似之处以及不同之处。 如果没有这两个概念的必要知识,将导致代码充满缺陷。
如果您有兴趣了解更多并在实际问题中实施这些概念,您可以查看由利物浦约翰摩尔斯大学认可的upGrad和IIIT-Bangalore提供的计算机科学硕士课程。 该课程专为入门级专业人士(21-45 岁)设计,提供来自领先行业专家和软件工程学院的 500 多个小时的培训。 更多课程详情可查看 upGrad 官方网页。