您的位置:首页 > 编程语言 > Java开发

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

2016-07-20 14:11 423 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息