static可以修饰属性、方法、类
static int a;
static修饰的属性,无论这个类创建了多少对象
(
Name name=new Name();),这些对象都是共用这个被修饰的属性,也就是一旦修改,所有对象的那个属性都会修改。
static修饰后的成员变量可以用类直接调用(
java推荐使用)
Name name=new Name();
Name.a=10;
System.out.println(name.a);//输出10
static修饰方法
静态的方法能被类直接调用。静态的方法只能被继承不能被重写。当引用类型是父类,则调用父类的静态方法,引用类型是子类则调用子类的静态方法。
public class Father
{
public static void output()
{ System.out.println("output1"); }
}
public class Son extends Father
{
pulic static void output()//子类中不能重写static,这是把父类的output隐藏起来
{ System.out.println("output2"); }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
static 代码块:静态代码块与方法同等级,写在类中。静态代码块在类被加载时候调用,比构造函数先执行。静态代码块只会执行一次,每次生成对象时候构造方法就会被调用。
不能在静态的方法里引用非静态的成员变量。但是静态方法里可以自己定义一个非静态成员变量。静态方法不能使用this。因为this指的是当前对象。静态方法可以不使用对象,所以会出错。
class Name
{
static
{
}
}
不能在静态的方法里引用非静态的成员变量。但是静态方法里可以自己定义一个非静态成员变量。静态方法不能使用this。因为this指的是当前对象。静态方法可以不使用对象,所以会出错。