Java 如何从抽象类中获取类的变量?
如果我有一个抽象类和一个扩展它的类,我如何得到将它扩展到扩展类的类的变量,类似这样:Java 如何从抽象类中获取类的变量?,java,inheritance,Java,Inheritance,如果我有一个抽象类和一个扩展它的类,我如何得到将它扩展到扩展类的类的变量,类似这样: abstract class A { void getVariable () { //get *variable* from class B and print it out } } class B extends A { int variable = 5; } 您不能直接从子类访问变量字段,但可以这样做 abstract class A { abstract
abstract class A {
void getVariable () {
//get *variable* from class B and print it out
}
}
class B extends A {
int variable = 5;
}
您不能直接从子类访问变量字段,但可以这样做
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;
}
}
忘记变量:您可能继承和重写的是行为(=方法)。试试这个:
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.
}
}
变量
只有classB
知道。它的超类A
不知道它。如果您将variable
移动到超类A
并且没有将其标记为private
,那么您可以从B
访问它,这是不可能的,除非variable
是公共的,并且您确实不想这样做。在我的实际代码中,变量是private int,但它有一个公共getter方法,可以这样做吗?只有当它是一个公共静态
方法并且变量也是静态
时,您才应该在子类中实现getVariable谢谢,这看起来像我需要的。“只有一个问题,”Itamar Green在评论中说,变量需要声明为静态,这是否也适用于这种情况?不,它不需要是静态的!你需要学习更多的OOP!