Java中的继承和私有变量

gur*_*e94 1 java inheritance android private chronometer

我正在尝试在android中的Chronometer类中添加一个方法.它将开始时间存储在此变量中:

private long mBase;
Run Code Online (Sandbox Code Playgroud)

所以我以为我能做到这一点

public class MyChronometer extends Chronometer{

    public void reset(){
        long now = SystemClock.elapsedRealtime();
        this.mBase = now;
    }
}
Run Code Online (Sandbox Code Playgroud)

但Android Studio告诉我mBase无法找到.为什么是这样?我做错了什么?根据我对Java中继承的理解,如果我扩展一个类,那么我将扩展我扩展的类的所有方法和变量,然后我可以添加它.这是不正确的?mBase即使它是私有的,这也不包括变量吗?

编辑:基本上我正在尝试为其创建一个setter函数 mBase

Mar*_*oun 12

我引用了教程 - 超类中的私有成员:

子类不继承private其父类的成员.然而,如果超类具有publicprotected用于访问它的方法private领域,这些也可以由子类所用.

这意味着您无法直接访问这些private字段,但您可以使用允许您访问这些字段的方法.此也可能有用:

                  Access Levels
------------+---------+---------+-----------+------
Modifier    |   Class | Package |  Subclass | World
------------+---------+---------+-----------+------
public      |     Y   |    Y    |     Y     |   Y
protected   |     Y   |    Y    |     Y     |   N
no modifier |     Y   |    Y    |     N     |   N
private     |     Y   |    N    |     N     |   N
Run Code Online (Sandbox Code Playgroud)