Java/Class/Fields
Содержание
Accessing Outer Class Variables
<source lang="java">
public class MemberClass {
int counter = 0; public class Counter { int counter = 10; public void increaseCount() { counter++; MemberClass.this.counter++; } public void displayCounts() { System.out.println("Inner: " + counter); System.out.println("Outer: " + MemberClass.this.counter); } } public void go() { Counter ct = new Counter(); ct.increaseCount(); ct.increaseCount(); ct.increaseCount(); ct.displayCounts(); } public static void main(String args[]) { MemberClass mc = new MemberClass(); mc.go(); }
}
</source>
Declaring Variables
<source lang="java">
/* In this example, a String object is declared and initialized with a reference to the String "blah" at the top of the main() method. An int named k is declared after the String object but is not given a value until later in the program. Another int named j is declared and intialized in the for loop. This variable will not be accessible outside of the for loop.
- /
public class TestDeclare {
public static void main(String args[]) { String str = "blah"; int k; System.out.println(str); k = 2; for (int j = 0; j < 2; ++j) { System.out.println("j is " + j); } }
}
</source>
Specifying initial values in a class definition
<source lang="java">
// : c04:StaticInitialization.java // Specifying initial values in a class definition. // From "Thinking in Java, 3rd ed." (c) Bruce Eckel 2002 // www.BruceEckel.ru. See copyright notice in CopyRight.txt. class Bowl {
Bowl(int marker) { System.out.println("Bowl(" + marker + ")"); } void f(int marker) { System.out.println("f(" + marker + ")"); }
} class Table {
static Bowl b1 = new Bowl(1); Table() { System.out.println("Table()"); b2.f(1); } void f2(int marker) { System.out.println("f2(" + marker + ")"); } static Bowl b2 = new Bowl(2);
} class Cupboard {
Bowl b3 = new Bowl(3); static Bowl b4 = new Bowl(4); Cupboard() { System.out.println("Cupboard()"); b4.f(2); } void f3(int marker) { System.out.println("f3(" + marker + ")"); } static Bowl b5 = new Bowl(5);
} public class StaticInitialization {
public static void main(String[] args) { System.out.println("Creating new Cupboard() in main"); new Cupboard(); System.out.println("Creating new Cupboard() in main"); new Cupboard(); t2.f2(1); t3.f3(1); } static Table t2 = new Table(); static Cupboard t3 = new Cupboard();
} ///:~
</source>
The full process of initialization
<source lang="java">
// : c06:Beetle.java // The full process of initialization. // From "Thinking in Java, 3rd ed." (c) Bruce Eckel 2002 // www.BruceEckel.ru. See copyright notice in CopyRight.txt. class Insect {
private int i = 9; protected int j; Insect() { System.out.println("i = " + i + ", j = " + j); j = 39; } private static int x1 = print("static Insect.x1 initialized"); static int print(String s) { System.out.println(s); return 47; }
} public class Beetle extends Insect {
private int k = print("Beetle.k initialized"); public Beetle() { System.out.println("k = " + k); System.out.println("j = " + j); } private static int x2 = print("static Beetle.x2 initialized"); public static void main(String[] args) { System.out.println("Beetle constructor"); Beetle b = new Beetle(); }
} ///:~
</source>