Java中的抽象|带有示例的抽象类和方法
什么是 Java 中的抽象?
JAVA 中的抽象 仅显示基本属性,并向用户隐藏对象的不必要细节。在 Java 中,抽象是使用抽象类、抽象方法和接口来完成的。抽象有助于降低编程复杂性和工作量。
在本教程中,您将学习-
- 什么是抽象类?
- 什么是抽象方法?
- 抽象代码示例
- Java 中的抽象类
- Java 中的最终关键字
什么是抽象类?
抽象类 是 Java 中的一种类,它声明一个或多个抽象方法。这些类可以有抽象方法也可以有具体方法。普通类不能有抽象方法。抽象类是包含至少一个抽象方法的类。我们可以通过java中的shape示例来理解这个概念 .
考虑以下由三个类 Rectangle、Circle 和 Triangle 继承的 Shape 类组成的类层次结构。创建 Shape 类是为了保存三个类 Rectangle、Circle 和 Triangle 共享的公共属性和方法。 calculateArea() 是所有三个子类共享的此类方法之一,并存在于 Shape 类中。
<中心>
<图>
现在,假设您编写代码来为上面描述的类创建对象。让我们观察一下这些对象在实际世界中的样子。
矩形类的对象将给出一个矩形,这是我们在日常生活中经常观察到的形状。
一个三角形类的对象会给出一个三角形,又是一个常见的日常形状。
但是在实际世界中,Class Shape 的对象会是什么样子呢?
如果您观察到 Shape 类服务于 我们实现继承和多态性的目标。 但它不是为了实例化而构建的。这样的类可以标记为 Abstract .无法实例化抽象 java 类。
语法:
abstract class Shape{ // code }
您可能不会将 Shape 类标记为 Abstract 然后实例化它。但是这样的对象在您的代码中没有用处,并且会为潜在的错误打开一个空间。因此这是不可取的。
什么是抽象方法?
抽象方法 在 Java 中,是一种只有方法定义但不包含实现的方法。没有主体的方法称为抽象方法。它必须在抽象类中声明。抽象方法永远不会是最终的,因为抽象类必须实现所有抽象方法。
众所周知,矩形、圆形和三角形的面积计算公式是不同的。 calculateArea() 方法必须被继承类覆盖。在 Shape 类中定义它是没有意义的,但我们需要确保所有继承类都具有该方法。
此类方法可以标记为抽象。
语法:
abstract public void calculateArea();
对于抽象方法,不需要实现。 只定义了方法的签名。
抽象代码示例
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
Java 中的抽象类:要点
- 一个抽象类可以 也有具体的(完整的)方法。
- 出于设计目的,即使一个类不包含任何抽象方法,也可以声明为抽象类
- 抽象类的引用可以指向其子类的对象,从而实现运行时多态例如:Shape obj =new Rectangle();
- 如果一个类有一个或多个抽象方法,则它必须被强制标记为抽象。
Java 中的最终关键字
final 修饰符适用于类、方法和变量。 final的含义因上下文而异,但基本思想是相同的。
- 最终类不能被继承
- 最终变量变为常量,其值无法更改。
- final 方法不能被覆盖。这样做是出于安全原因,这些方法用于优化。
示例 :- 学习摘要和最终关键字
步骤 1) 将以下代码复制到编辑器中。
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
步骤 2) 保存,编译并运行代码。
步骤 3) 错误=?抽象方法未在类 Rectangle 中实现。要修复问题,请取消注释第 15 行。
第 4 步) 取消注释 # 13 行。保存并编译代码。
第 5 步) 错误 =?变量b是最终的
抽象方法的规则
- 抽象方法没有实现;它只有方法签名
- 如果类使用抽象方法,则必须将其声明为抽象。反之亦然。这意味着抽象类不一定有抽象方法。
- 如果常规类扩展了抽象类,则该类必须实现抽象父类的所有抽象方法
java