如何从抽象类中获取类的变量?

时间:2016-10-31 18:51:24

标签: java inheritance

如果我有一个抽象类和一个扩展它的类,我怎样才能获得将它扩展到扩展类的类的变量,如下所示:

abstract class A {
    void getVariable () {
        //get *variable* from class B and print it out
    }
}

class B extends A {
    int variable = 5;
}

3 个答案:

答案 0 :(得分:3)

您不能直接从子类访问变量字段,但您可以这样做

abstract class A {
   abstract int getVariable ();

   void anotherMethod() {

       System.out.println("Variable from child: " + getVariable());
   }
}

class B extends A {
    int variable = 5;

    @Override
    int getVariable() {
        return variable;
    }
}

答案 1 :(得分:0)

忘记变量:你可以继承和覆盖的是行为(=方法)。试试这个:

abstract class A {
    protected abstract int getVariable ();
}

class B extends A {
    private int variable = 5;
    protected int getVariable ()
    {
        return variable;
    }
}   

class C extends A {
    protected int getVariable ()
    {
        return 0; // This class might decide not to define its own variable.
    }
}

答案 2 :(得分:0)

variable仅对课程B已知。它的超类A不知道它。如果您将variable移至超类A并且未将其标记为private,则可以从B访问它。