Java/Class/Fields

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

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>