java基础面向对象之static关键字
2017-03-14
1、static关键字定义属性
1 public class StaticDemo1 { 2 private String name ; 3 private int age ; 4 static String CS = "北京" ; //使用static声明的属性 5 public StaticDemo1(String name ,int age){ 6 this.name = name ; 7 this.age = age ; 8 } 9 public void getInfo(){ 10 System.out.println("姓名:"+this.name+",年龄:"+this.age+",城市:"+this.CS); 11 } 12 public static void main(String args[]){ 13 StaticDemo1 sd1 = new StaticDemo1("张三" , 20) ; 14 StaticDemo1 sd2 = new StaticDemo1("李四" , 24) ; 15 sd1.CS = "上海" ; 16 /** 17 * 使用static声明的对象,只要有一个对象修改了属性值那么所有的都将会修改 18 */ 19 sd1.getInfo() ; 20 sd2.getInfo() ; 21 } 22 }
既然static是一个公共属性的概念,那么由一个简单的对象去修改是不合适的,必须要由 类名.属性名 = “” ;来进行访问。
static声明的属性与非static声明的属性还有一个最大的区别就是,非static声明的属性必须实例化对象之后才可以使用,而static声明的属性不受实例化对象的控制,也就是说在没有实例化对象产生的情况下依然可以使用使用static声明的属性。
1 class Book{ 2 static String pob = "清华大学出版社" ; 3 } 4 public class StaticDemo2 { 5 public static void main(String[] args) { 6 System.out.println(Book.pob = "北京大学出版社"); 7 } 8 }
可以发现static声明的属性有一个特征:虽然定义在类的结构里,但是不受到对象的控制,是独立于类存在的。
2、static关键字定义方法
分析:
所有的非static声明的属性或者方法必须要有实例化产生才可以使用。
使用static声明的属性或者方法不需要实例化对象就可以使用。
所以说
1)使用static声明的方法不可以调用非static声明的属性或方法。
2)非static声明的方法可以调用static声明的属性或方法。