Java静态变量和继承

as3*_*unt 0 java inheritance

我有一个基类,我定义了一个静态变量.从这篇文章中我知道扩展基类的每个类都将具有类变量(静态变量)的相同副本.有没有办法让每个扩展类都拥有自己的"类变量副本"?我尝试声明基类摘要但没有运气.

public abstract class BaseBlah{
    private static int number_of_threads;

} 

public class Blah1 extends BaseBlah{

}
public class Blah2 extends BaseBlah{

}
Run Code Online (Sandbox Code Playgroud)

我的情况比示例稍微复杂一些,因为我希望每个扩展类抽象一个在其专用线程池中执行的常见任务类型,在这种情况下是类变量.

Pet*_*rey 7

如果你给它一个字段的副本,每个类都有它自己的副本,但不是自动的.

public abstract class BaseBlah{
    private static int number_of_threads;

} 

public class Blah1 extends BaseBlah{
    private static int number_of_threads;

}
public class Blah2 extends BaseBlah{
    private static int number_of_threads;

}
Run Code Online (Sandbox Code Playgroud)

所有课程都有自己的副本 number_of_threads

注意:hiding如果字段不是私有而不是继承,则会调用此方法.`

  • @brotherofmysister最有可能更清洁的方法是不创建这么多的子类.在Java中没有办法说所有子类必须具有特定的构造函数,静态字段或静态方法,并且通常有另一种方法来实现这一点. (2认同)