静态代码块

//Cartoon.java
//初始化及类的装载

class Art {
  Art() {
    System.out.println("Art constructor");
  }
  static
	{
	  System.out.println("art");
	}
}

class Drawing extends Art {
  Drawing() {
    System.out.println("Drawing constructor");
  }
   static
	{
	  System.out.println("Drawing");
	}
}

public class Cartoon extends Drawing {
  Art a=new Art();
  Drawing d=new Drawing();
  Cartoon() {
    System.out.println("Cartoon constructor");
  }
   static
	{
	  System.out.println("Cartoon");
	}
  public static void main(String[] args) {
        Cartoon x =null; 
		x=new Cartoon();
  }
} 

 

class Value
{
	static int c = 0;
	int value;
	static
	{
		c = 15;
		increase();
	}
	Value()
	{
		System.out.println("Value()");
		System.out.println(Static3.i);
		c = 3;
	}
	Value(int i)
	{

		System.out.println("Value(int i) i=" + i);
		c = i;
	}
	static void increase()
	{
		System.out.println("increase()");
		c++;
	}

	public void setValue(int i)
	{
		value = i;
	}
}
class Static2
{
	static int i;
	static Value v1, v2;
	Value v = new Value(1);
	public static void prt(String s)
	{
		System.out.println(s);
	}
	static
	{
		System.out.println("ok");
	}
	static
	{
		prt("Static block");
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v1 = new Value(5);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v2 = new Value(6);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	public static void main(String[] args)
	{
		prt("main");
		Static2 sta = new Static2();
		Static2 ct = new Static2(); 
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v1.increase();
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	static
	{
		System.out.println("ok");
	}
}

 

/**
 * Static3 关于static变量和static方法
 */
class Value
{
	// 整型类成员变量
	static int c = 0;
	int value;
	static
	// 静态代码块
	{
		c = 15;
		increase();
	}
	// 构造方法
	Value()
	{
		System.out.println("Value()");
		System.out.println(Static3.i);
		c = 3;
	}

	// 构造方法
	Value(int i)
	{

		System.out.println("Value(int i) i=" + i);
		c = i;
	}

	// 类成员方法
	static void increase()
	{
		System.out.println("increase()");
		c++;
	}

	public void setValue(int i)
	{
		value = i;
	}
}

class Static3
{
	static int i;
	// 共有类方法,简化输出函数
	public static void prt(String s)
	{
		System.out.println(s);
	}
	// 成员变量v是Value类的实例的引用变量,是Static3类的实例成员变量
	Value v = new Value(1);
	// v1和v2是Static3类的类成员变量
	static Value v1, v2;
	// 静态代码块,
	/*
	 * 一个类中可以使用不包含在任何方法体中的静态代码块(static block), 当类被载入时,
	 静态代码块被执行; 静态代码块只执行一次;
	 * 静态代码块经常用来进行类属性的初始化
	 */
	static
	{
		System.out.println("ok");
	}
	static
	{
		prt("Static block");
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		
		v1 = new Value(5);
		//v1.setValue(100);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		v2 = new Value(6);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}

	public static void main(String[] args)
	{
		// d = 10;
		prt("main");
		Static3 sta = new Static3();
		// sta.d = 10;
		Static3 ct = new Static3(); // 创建一个Count类的实例,其引用是ct
		// Count类的实例的成员变量v的成员变量c
		prt("ct.v.c=" + ct.v.c);
		// Count类的成员方法main调用Count类的成员变量v1和v2
		// 注意:类方法只能调用类变量
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
		// Count类的成员变量v1的成员方法inc
		v1.increase();
		prt("ct.v.c=" + ct.v.c);
		prt("v1.c=" + v1.c + "  v2.c=" + v2.c);
	}
	static
	{
		System.out.println("ok");
	}
}

 

你可能感兴趣的:(C++,c,C#)