在 Java 中使用超级关键字调用基类构造函数
原文:https://www . geesforgeks . org/使用-super-关键字调用 java 中的基类构造函数/
我们更喜欢 继承 来重用现有类中可用的代码。在 Java 中,继承是一个类继承另一个类的属性的概念。在下面的例子中,有两个类编程和动态规划,而编程是父类,动态规划是子类。从主类中,我们创建了一个 DP 的对象,即子类,因为它也允许我们从它的父类中访问方法,但是如果我们创建了一个父类(编程)的对象,那么我们就不能从它的子类中访问方法或对象。
创建子类的对象后,我们首先从子类调用一个方法,然后从父类调用一个方法。这并不重要,因为我们可以以任何顺序调用对象。
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate inheritance properties
class Programming {
// Creating method m1 for class Programming
public void m1()
{
System.out.println("Programming");
}
}
class DP extends Programming {
// Creating method m2 for class DP
public void m2()
{
System.out.println("DP");
}
}
public class GFG {
public static void main(String[] args)
{
// Creating Obj for Class DP and
// Calling both m1 from class programming
// And calling m2 from class DP respectively.
DP obj = new DP();
obj.m2();
obj.m1();
}
}
输出:
DP
Programming
建造师 传承
在下面的例子中,我们已经创建了一个父类和子类。在这里,我们已经创建了一个子类的对象,因为构造函数将在创建一个我们不需要提及的对象时调用自己。
创建子类的对象后,构造函数应该打印它自己的类的输出,但是从输出中,我们可以识别出父类被执行了,然后子类被执行了,这是因为我们为继承类创建了一个构造函数,默认情况下每个类都包含一个 super(),因为我们在调用继承类时,它的第一行包含 super()并调用了 Parent 类。
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to illustrate
// the concept of Constructor
// inheritance.
// Base Class
class Programming {
// Constructor for class Programming
public Programming()
{
System.out.println("Programming");
}
}
// Child Class inherit the Base
// Class
class DP extends Programming {
// Constructor for class DP
public DP() { System.out.println("DP"); }
}
// Main Class
public class GFG {
public static void main(String[] args)
{
// Creating obj for
// class DP
DP obj = new DP();
}
}
Output
Programming
DP
建造师超载带超
在下面的例子中,我们使用了构造函数重载的概念,我们创建了一个子类的对象,在调用子类的构造函数后,它的第一行是 super(10,20),表示从父类调用匹配的构造函数,如果我们没有提到那一行,默认情况下,它调用 super()而没有从父类调用参数化的构造函数。
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to demonstrate
// the concepts of constructor
// overloading.
// Base Class
class Programming {
// Creating Constructor for
// class Programming.
public Programming()
{
System.out.println("Programming");
}
// Parameterized Constructor
public Programming(int i, int j)
{
System.out.println("Programming + +");
}
}
// Child Class
class DP extends Programming {
public DP()
{
// Calling by using
// Programming(int i,int j)
// from class Programming.
super(10, 20);
System.out.println("DP");
}
// Parameterized Constructor
// for class DP
public DP(int i, int j)
{
System.out.println("DP + +");
}
}
// Main Class
public class GFG {
public static void main(String[] args)
{
// Creating Object for class DP.
DP obj = new DP();
}
}
输出:
Programming + +
DP
类似
让我们看看下面的片段,
- 在下面的代码中,我们已经创建了一个子类的对象,我们从对象行本身传递值 10,在转到特定的构造函数之后,默认情况下,它首先调用 super(),并从父类打印“Programming”。
- 需要注意的一点是,这里我们从对象创建行调用参数化构造函数,但是默认情况下它将调用 super(),这在默认情况下是可用的。
- 在子类中,我们也可以给 super()加上参数,从父类中调用特定的构造函数。
Java 语言(一种计算机语言,尤用于创建网站)
// Base Class
class Programming {
// Default Constructor
public Programming()
{
System.out.println("Programming");
}
// parameterized Constructor
public Programming(int i, int j)
{
System.out.println("Programming + +");
}
}
class DP extends Programming {
public DP() { System.out.println("DP"); }
// parameterized Constructor with
// one parameter
public DP(int i) { System.out.println("DP +"); }
// parameterized Constructor with
// two parameter i and j.
public DP(int i, int j)
{
System.out.println("DP + +");
}
}
// Main Class
public class GFG {
public static void main(String[] args)
{
// Creating obj for DP
// class which inherits the
// properties of class programming
DP obj = new DP(10);
}
}
输出:
Programming
DP +
版权属于:月萌API www.moonapi.com,转载请注明出处