“你好,我最喜欢的学生。现在,我要向你介绍变量的可见性。”
“嗯?变量可以隐身吗?”
“不。变量的‘可见性’(或作用域)是指代码中可以引用该变量的位置。你可以在程序中的任意位置使用某些变量,但其他某些变量只能在其类中使用,还有一些变量只能在一种方法中使用。”
“例如,在声明变量之前不能使用它。”
“有道理。”
“下面是几个示例:”
┏
┃public class Variables
┃┏
┃┃{
┃┃ private static String TEXT = "The end.";
┃┃ ┗━━━━━━━━━━━━━━┛
┃┃ public static void main (String[] args)
┃┃ ┏ ┗━━━━━━━┛
┃┃ ┃ {
┃┃ ┃ System.out.println("Hi");
┃┃ ┃ String s = "Hi!";
┃┃ ┃ ┏┗━━━━┛
┃┃ ┃ ┃ System.out.println(s);
┃┃ ┃ ┃ if (args != NULL)
┃┃ ┃ ┃ {
┃┃ ┃ ┃ String s2 = s;
┃┃ ┃ ┃ ┗━━━━┛
┃┃ ┃ ┃ ┏
┃┃ ┃ ┃ ┃ System.out.println(s2);
┃┃ ┃ ┃ ┗
┃┃ ┃ ┃ }
┃┃ ┃ ┃ Variables variables = new Variables();
┃┃ ┃ ┃ System.out.println(variables.instanceVariable);
┃┃ ┃ ┃ System.out.println(TEXT);
┃┃ ┃ ┗
┃┃ ┃ }
┃┃ ┗
┃┃ public String instanceVariable;
┃┃ ┗━━━━━━━━━━━━━━━┛
┃┃ public Variables()
┃┃ {
┃┃ instanceVariable = "Instance variable test.";
┃┃ }
┃┃}
┃┗
┗
1.在方法中声明的变量从其声明开始到方法结束一直存在(可见)。
2.在代码块中声明的变量在代码块结束之前一直存在。
3.方法的参数在该方法中随处可在。
4.对象中的变量在包含它们的对象的整个生命周期中都存在。变量的可见性也可以由特殊的访问修饰符定义:public 和 private。
5.static(类)变量在程序运行的整个过程中都存在。变量的可见性也可以由访问修饰符定义。
“我喜欢图片。它们使一切变得清晰。”
“乖孩子,阿米戈。我一直觉得你是个聪明人。”
“我还要向你介绍‘访问修饰符’。别怕。它们一点都不复杂。在这里你会看到单词 public 和 private。”
“我不害怕。只是我的眼睛在抽搐。”
“我相信你。你可以管理其他类如何访问(或看到)某个类的方法和变量。你只能为每个方法或变量分配一个访问修饰符。
1. public 访问修饰符。
你可以在程序中的任意位置使用标有 public 修饰符的变量、方法或类。这是最高的访问级别 – 这里没有任何限制。
2. private 访问修饰符。
对于标有 private 修饰符的变量或方法,你只能从声明该变量或方法的类中使用它们。对于所有其他类,标记的方法或变量将不可见,就像不存在一样。这是最高的封闭级别 – 只能在它自己的类中访问。
3.无修饰符。
如果变量或方法未标有任何修饰符,则被视为标有“默认”访问修饰符。此类变量和方法对于声明它们的包中的所有类都是可见的。并且仅对这些类可见。这种访问级别有时称为“package-private”访问,因为对这些变量和方法的访问对于包含其类的整个包是开放的。
下表总结了我们讨论的内容:”
修饰符 | 访问位置... | ||
---|---|---|---|
自己的类 | 自己的包 | 任意类 | |
private | 是 | 否 | 否 |
无修饰符 (package-private) | 是 | 是 | 否 |
public | 是 | 是 | 是 |
GO TO FULL VERSION