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