官术网_书友最值得收藏!

Scope and variables revisited

You might remember that in the Real World Methods project, the slightly disturbing anomaly was that variables in one method were not apparently the same as those from another, even if they did have the same name. If you declare a variable in a method, whether that is one of the lifecycle methods or one of our own methods, it can only be used within that method.

It is no use doing this in onCreate:

int a = 0;

And then, trying to do this in onPause or some other method:

a++;

We will get an error because a is only visible within the method it was declared in. At first, this might seem like a problem, but perhaps surprisingly, it is actually a very useful feature of Java.

The term used to describe this is "scope". A variable is said to be in a scope when it is usable and out of the scope when it is not. The topic of scope is best discussed along with classes, and we will in the next chapter, but as a sneak look at what lies ahead you might like to know that a class can have its very own variables, and when it does, they have a scope for the whole class. That is, all its methods can see and use them. We call them member variables or fields.

To declare a member variable, you can simply use the usual syntax after the start of the class, outside of any method declared in the class. If our app started like this:

public class MainActivity extends AppCompatActivity {
  
  int mSomeVariable = 0;
  // Rest of code and methods follow as usual
  // …

We could use mSomeVariable anywhere, inside any method in this class. Our new variable, mSomeVariable, has class scope. We append m to the variable name simply to remind us when we see it that it is a member variable. This is not required, but it is a useful convention.

Here are a couple of hypothetical method questions to try and make some of what we have learned stick a little more. Try and answer them yourself.

主站蜘蛛池模板: 连江县| 类乌齐县| 永济市| 云安县| 昌平区| 玉门市| 沾化县| 浦城县| 长寿区| 婺源县| 诸城市| 仙桃市| 山东省| 湘阴县| 东阿县| 孙吴县| 轮台县| 临潭县| 尼玛县| 曲靖市| 巩留县| 长宁区| 静宁县| 长白| 琼结县| 宁明县| 芜湖市| 封开县| 孟津县| 吉隆县| 九台市| 石屏县| 简阳市| 宜宾县| 新民市| 九龙县| 福安市| 潜江市| 通辽市| 易门县| 子长县|