Java/Class/Fields

Материал из Java эксперт
Перейти к: навигация, поиск

Accessing Outer Class Variables

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();
  }
}





Declaring Variables

/*
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);
    }
  } 
}





Specifying initial values in a class definition

// : 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();
} ///:~





The full process of initialization

// : 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();
  }
} ///:~