您的位置:首页 > 其它

static修饰符的使用

2006-10-13 12:54 363 查看
static修饰符能修饰内部类,方法,变量,代码块。

静态 成员意味着该成员属于类级,而不依赖于类的实例,也不依赖于任何一个类的成员,可以不通过创建类的实例来使用静态成员。

静态变量在类被加载入时初始化,一个类只有一个静态变量的内存空间,而不会依赖于对象再次分配空间。局部变量不能被声明为静态变量。

静态方法只能访问静态变量(静态方法没有this变量)。静态方法只能被重写成静态的,不能被重写成非静态的。非静态方法不能重写成静态的。

例子:

以下为没有使用静态方法的:

public class d
{
public static void main(String args[])
{
Child c=new Child();
c.doStuff();
Parent p=new Parent();
p.doStuff();
p=c;
p.doStuff();
Parent a=new Child();
a.doStuff();
a.x=11;
a.doStuff();
p.doStuff();
Parent b=new Parent();
b.doStuff();
}
}

class Parent
{
Parent(){System.out.println("Parent init~~~");}
int x=100;
public void doStuff()
{
System.out.println("Parent~!~!~");
System.out.println(x);
}
}
class Child extends Parent
{
Child(){System.out.println("Child init~~~");}
int x=200;
public void doStuff()
{
System.out.println("Child~!~!~");
System.out.println(x);
}
}

输出结果为:

Parent init~~~
Child init~~~
Child~!~!~
200
Parent init~~~
Parent~!~!~
100
Child~!~!~
200
Parent init~~~
Child init~~~
Child~!~!~
200
Child~!~!~
200
Child~!~!~
200
Parent init~~~
Parent~!~!~
100

而当使用静态方法时:

public class d
{
public static void main(String args[])
{
Child c=new Child();
c.doStuff();
Parent p=new Parent();
p.doStuff();
p=c;
p.doStuff();
Parent a=new Child();
a.doStuff();
a.x=11;
a.doStuff();
p.doStuff();
Parent b=new Parent();
b.doStuff();
}
}

class Parent
{
Parent(){System.out.println("Parent init~~~");}
static int x=100;
public static void doStuff()
{
System.out.println("Parent~!~!~");
System.out.println(x);
}
}
class Child extends Parent
{
Child(){System.out.println("Child init~~~");}
static int x=200;
public static void doStuff()
{
System.out.println("Child~!~!~");
System.out.println(x);
}
}

输出结果为:

Parent init~~~
Child init~~~
Child~!~!~
200
Parent init~~~
Parent~!~!~
100
Parent~!~!~
100
Parent init~~~
Child init~~~
Parent~!~!~
100
Parent~!~!~
11
Parent~!~!~
11
Parent init~~~
Parent~!~!~
11
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: