继承方法不能从父类中工作

时间:2011-05-08 04:24:42

标签: java inheritance static-methods method-call

我想知道为什么我的子类没有正确继承。

如果我有......

public class ArithmeticOp{

    //some constructor

    public static void printMessage(){
        System.out.println("hello");
    }

}

和另一个班级

public class AddOp extends ArithmeticOp{

    //some constructor

    ArithmeticOp op = new ArithmeticOp();
    op.printMessage();           //returns error
}

我的eclipse不断返回“令牌上的语法错误”printMessage“,此标记后的标识符”

有人可以帮忙吗?谢谢!还有其他方法从父类调用子类以及从子类调用方法吗?谢谢你!

2 个答案:

答案 0 :(得分:3)

这是因为你不能将任意代码放入类体:

public class AddOp extends ArithmeticOp{

    ArithmeticOp op = new ArithmeticOp(); // this is OK, it's a field declaration
    op.printMessage();                    // this is not OK, it's a statement
}

op.printMessage();需要位于方法内部或初始化程序块内。

除此之外,您的代码感觉不对。为什么要在其自己的子类中实例化<{1}}

答案 1 :(得分:0)

这是因为该方法被声明为静态。我可能弄错了,我相信如果我有人会发表评论,但我认为你可以这样做:

public class AddOp extends ArithmeticOp{

    //some constructor

    ArithmeticOp op = new ArithmeticOp();
    super.printMessage();           //super should call the static method on the parent class
}

或者

public class AddOp extends ArithmeticOp{

    //some constructor

    ArithmeticOp op = new ArithmeticOp();
    ArithmeticOp.printMessage();           //Use the base class name
}