static 是静态修饰符,一般用来修饰类中的成员。
被static修饰的成员变量属于类,每个对象都可以去调用和修改他,每个对象都共享这个类,一个对象修改他,每个对象的都会被修改
静态内容是优先于对象存在的,里面不能用this/super,静态修饰的内容存储于方法与数据共享区的静态区
1 public class fu { 2 String name; 3 int age; 4 static String sex; //定义一个性别为类,共享 5 }
1 public class test { 2 public static void main(String[] args) { 3 zi zi =new zi(); 4 zi.age = 15; 5 zi.name = "董斌"; 6 zi.sex = "男"; //写了2个继承父类的子类,然后对性别赋值,因为都是继承父类,所以zi1也是共用这个属性 7 zi1 zi1 = new zi1(); 8 zi1.name = "张瑞"; 9 zi1.age = 18; 10 System.out.println(zi.sex); 11 System.out.println(zi1.sex); 12 } 13 }
被static修饰的成员可以通过类名直接访问
类名.静态成员变量名
类名.静态成员方法名(参数)
对象名.静态成员变量名 ------不建议使用该方式,会出现警告
对象名.静态成员方法名(参数) ------不建议使用该方式,会出现警告
在多态中,如果父类用static 修饰了一个方法,并且有子类继承了,那子类也要用static来修饰,执行的时候会调用父类中的方法
1 public class fu { 2 private String name; 3 private int gae; 4 public static void eat(){ 5 System.out.println("老子吃肉"); 6 }
1 public class zi extends fu{ 2 public static void eat(){ 3 System.out.println("儿子吃肉"); 4 } 5 }
1 public class test { 2 public static void main(String[] args) { 3 fu zi =new zi(); 4 zi.eat(); 5 }