java 中的 super()

2022-08-31 05:44:05

用于调用父构造函数?请解释 。super()super()


答案 1

super()调用不带参数的父构造函数。

它也可以与参数一起使用。即 并且它将调用接受类型(如果存在)的 1 个参数的构造函数。super(argument1)argument1

此外,它还可用于从父级调用方法。即super.aMethod()

更多信息和教程请点击这里


答案 2

一些事实:

  1. super()用于调用直接父级。
  2. super()可以与实例成员一起使用,即实例变量和实例方法。
  3. super()可以在构造函数中用于调用父类的构造函数。

好了,现在让我们实际实现 .super()

查看程序 1 和 2 之间的区别。在这里,程序 2 在 Java 中证明了我们的第一个语句。super()

计划1

class Base
{
    int a = 100;
}

class Sup1 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup1().Show();
    }
}

输出:

200
200

现在查看程序2并尝试找出主要区别。

计划2

class Base
{
    int a = 100;
}

class Sup2 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(super.a);
        System.out.println(a);
    }
    public static void main(String[] args)
    {
        new Sup2().Show();
    }
}

输出:

100
200

在程序 1 中,输出仅为派生类的输出。它既不能打印基类也不能打印父类的变量。但是在程序 2 中,我们在打印变量输出时使用变量,而不是打印派生类的变量值,而是打印基类的变量值。所以它证明是用来称呼直系父母的。super()aaasuper()

好了,现在看看程序3和程序4之间的区别。

计划3

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup3 extends Base
{
    int a = 200;
    void Show()
    {
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup3().Show();
    }
}

输出:

200

此处的输出为 200。当我们调用 时,派生类的函数被调用。但是,如果我们想调用父类的函数,我们该怎么办呢?请查看程序 4 以获取解决方案。Show()Show()Show()

计划4

class Base
{
    int a = 100;
    void Show()
    {
        System.out.println(a);
    }
}

class Sup4 extends Base
{
    int a = 200;
    void Show()
    {
        super.Show();
        System.out.println(a);
    }
    public static void Main(String[] args)
    {
        new Sup4().Show();
    }
}

输出:

100
200

在这里,我们得到两个输出,100和200。当调用派生类的函数时,它首先调用父类的函数,因为在派生类的函数内部,我们通过在函数名称之前放置关键字来调用父类的函数。Show()Show()Show()Show()super


推荐