【奔跑的菜鸟】Java中的关键字static和final以及静态语句块

static表示静态的意思。可以是静态属性,静态方法。所有的对象共用同一个静态成员(包括属性和方法)。静态成员可以通过类名.静态属性类名.静态方法的方式直接调用。例如:

public class Test
{
	public static void main(String[] args)
	{
		A.outPut();
		A.a = 10;
		A a1 = new A();
		System.out.println(a1.a);
		a1.a = 5;
		A a2 = new A();
		System.out.println(a2.a);
		B b1 = new B();
		System.out.println(b1.a);
		A.outPut();
		B.outPut();
		System.out.println("----------------------");
		A b_a = new B();//此时A的引用指向B的对象
		b_a.outPut();
	}
}

 class A
 {
	static int a;
	public static void outPut()
	{
		System.out.println("A static funcation");
	}
 }

class B extends A
{
	public static void outPut()
	{
		System.out.println("B static funcation");
	}
}
 
运行结果为:

A static funcation
10
5
5
A static funcation
B static funcation
----------------------
A static funcation
对于final关键字,表示终止态的意思。修饰类时,表示该类不可以被继承。修饰类属性,如int时,必须在申明时就赋值或在构造方法中就进行赋值,且后来不可以修改它的值。如果修饰的是引用则表示,该引用只能指向这个对象,不可以指向其它对象。修饰方法时,表示该方法是终态的方法不能被重写。


对于static block,static block也是用于初始化的,只在类加载到JVM时运行,运行在构造函数之前。

public class Test
{
	public static void main(String[] args)
	{
			new C();
			System.out.println("--------------");
			new C();
	}
}

 class A
 {
	 static
	 {
		 System.out.println("A's static block.");
	 }
	 
	 A()
	 {
		 System.out.println("A's construct");
	 }
 }

 class B extends A
 {
	 B()
	 {
		 System.out.println("B's construct");
	 }
 }
 
 class C extends B
 {
	 C()
	 {
		 System.out.println("C's construct");
	 }
	 
	 static
	 {
		 System.out.println("C's static block");
	 }
 }
运行结果:

A's static block.
C's static block
A's construct
B's construct
C's construct
--------------
A's construct
B's construct
C's construct






你可能感兴趣的:(奔跑的菜鸟)