黑马程序员 ---- static 类方法

来源:互联网 发布:网络对战射击游戏 编辑:程序博客网 时间:2024/06/15 11:05

  ------- android培训、java培训、期待与您交流! ----------


例1:class Person{String name;static String city = "China";int age;public Person(String name,int age){this.name = name;this.age = age;}public String talk(){return name+"\t"+age+"\t"+city;}public static void setCity(String c){city = c;}}public class Test01{public static void main(String[] args){Person p1 = new Person("zhansan",20);Person p2 = new Person("lisi",25);Person p3 = new Person("wangwu",30);System.out.println(p1.talk());System.out.println(p2.talk());System.out.println(p3.talk());System.out.println("*****************修改之后*********************");Person.setCity("USA");// 由 Person 调用 setCity() 方法,对 city 的内容进行修改。System.out.println(p1.talk());System.out.println(p2.talk());System.out.println(p3.talk());}}

注意:
1.  静态方法只能访问静态成员(静态先加载,非静态还未加载,所以不能访问非静态)。  非静态方法既可以访问静态也可以访问非静态。
  
2.  静态方法中不可以定义 this 、 super 关键字。(  因为 this 和 super 都代表对象,而静态优先于对象存在,所以静态方法中不可以出现 this 、super 。)
 
3.  主方法必须是静态的。


         例2:         class Person {String name;public static void show(){System.out.println("hh");// show 这个功能没有访问到非静态数据 name 时,show 功能可以定义成静态的。}}class privateTest{public static void main(String[] args){//Person p = new Person();//p.show();Person.show();//直接用类名调用函数。}}

例3: class Person{String name;public static  void show(){System.out.println(name+"\t"+"hh");}}class Test{public static void main(String[] args){Person p = new Person();p.show();}}

运行结果:
                Exception in thread "main" java.lang.Error: 无法解析的编译问题:
                不能对非静态字段 name 进行静态引用


                at Person.show(Test.java:7)
                at Test.main(Test.java:16)
    

例4:class Person{String name;public void show(){System.out.println(name+"\t"+"hh");}}class Test{public static void main(String[] args){Person p = new Person();p.show();}}

点评:什么时候使用静态方法?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的。

0 0