java基础面向对象之static关键字

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声明的属性或方法。

 

  

posted @ 2017-03-14 18:36  西巴  阅读(120)  评论(0编辑  收藏  举报