需要帮助使用super关键字来调用父类方法

时间:2017-02-01 06:22:29

标签: java

class TextClass
{
     int temp;
     void sum(int x,int y)
     {
         temp = x+y;
         System.out.println("Sum of parent class sum method = " + temp);
     }

 }
 class MethodOverriding extends TextClass
 {
    int temp;
    void sum(int x,int y)
    {
        temp = x + y;
        System.out.println("Sum of base or chlid class method = " + temp);
    }
    super.sum(10,15);

    public static void main(String args[])
    {

        MethodOverriding mo = new MethodOverriding();
        mo.sum(2,4);
        System.out.println(mo.super.sum(3,5));
    }
}

我如何在main方法中使用super关键字来调用父类sum方法?

2 个答案:

答案 0 :(得分:0)

你不能直接从main方法访问它,因为main是静态的,你的两个类都应该静态调用super。否则,如下例所示,您创建一个对象,构造函数/方法将相应地调用super。哪个是不可能的,super是非静态变量

官方文档here

  

如果你的方法覆盖了它的一个超类的方法,你可以   通过使用关键字super调用重写的方法。您   也可以使用super来引用隐藏字段(尽管隐藏字段   不鼓励)。考虑这个类,Superclass:

实施例: 超级

public class SuperClass {
    public void printHello() {
       System.out.println("Hello from SuperClass");
       return;
    }
 }

子类:

public class SubClass extends SuperClass {
    public void printHello() {

    super.printHello();
       System.out.println("Hello from SubClass");
       return;
    }
    public static main(String[] args) {
       SubClass obj = new SubClass();
       obj.printHello();
    }
 }

输出:

Hello from SuperClass
Hello from SubClass

答案 1 :(得分:0)

你不能从Main方法那样做。

如果要使用类TextClass的sum方法,

你必须在MethodOverriding Class

中调用super

但是如果你想同时使用这两种方法,你可以在MethodOverriding Class中使用两种不同的求和方法。其中一个将调用super.sum()而另一个将覆盖它