Java抽象类中的构造函数
抽象类是用抽象关键字声明的类。
抽象类的属性:
- 抽象可以有抽象和非抽象的方法。
- 它必须用抽象关键字声明。
- 它可以有一个构造函数,静态方法。
- 它可以有一个final方法来防止抽象类的子类不改变方法的主体
- 抽象方法不包含任何主体,或者简单地说,您可以说您不能在抽象类中定义抽象方法。我们可以在其抽象类的派生类中定义一个抽象方法。
- 抽象类的对象无法实例化,这意味着您不能直接创建抽象类对象,但可以通过引用其子类来创建其对象。
构造函数:构造函数在类本身中总是由其类名调用。构造函数用于初始化对象而不是构建对象。
抽象类也有构造函数。如果我们没有在抽象类中定义任何构造函数,那么 JVM(Java虚拟机)将为抽象类提供一个默认构造函数。如果您想知道如何定义用户定义的构造函数,例如带参数的构造函数或抽象类中的任何类型的构造函数,那么您应该遵循给定的过程。
应遵循的程序:
- 如果您在抽象类中使用参数定义自己的构造函数,但忘记在其派生类构造函数中调用自己的构造函数,则 JVM 将默认调用构造函数。
- 因此,如果您在抽象类中定义单参数或多参数构造函数,请确保使用 super 关键字调用驱动类构造函数中的构造函数。
方法:
在这个程序中,我们将使用以下方法将两个数字相乘
- 首先,我们创建一个名为 Content 的抽象类,并定义一个用户定义一个带有一个参数的构造函数、一个名为“a”的变量和一个名为“multiply”的抽象方法
- 然后我们创建一个必须从这个名为 'GFG' 的抽象类 'Content' 派生的类。在 GFG 类中,我们将定义一个构造函数,并在方法内部使用 super 关键字调用父类构造函数,并在其中定义其父类的抽象方法。
- 在主类中,我们通过引用其派生类对象来创建抽象类“Content”的对象。然后我们通过它的对象调用抽象类的方法。
- 在方法内部,我们将存储在不同变量名称中的值相乘,其中一个变量是抽象类的变量。我们可以通过其派生类对象访问抽象类的变量。
Java
// Concept of Constructors in Java Abstract Class
// An abstract class Named as content
abstract class Content {
int a;
// Constructor of Content
public Content(int a) { this.a = a; }
// Abstractact Method in Abstract class
abstract int multiply(int val);
}
// It is the Child class of abstract class Content
class GFG extends Content {
// constructor of Child class GFG
GFG() { super(2); }
// Define method the abstract method
public int multiply(int val) { return this.a * val; }
}
// Main class
public class Main {
// Main Method in java
public static void main(String args[])
{
// create reference object of abstract
// class using it child class
Content c = new GFG();
// Call abstract method of abstract class
System.out.println(c.multiply(3));
}
}
输出
6