说说Java中的static

      在java中,static可以修饰方法、变量、类、程序块,下面将会分析一下各种修饰的作用,对于static变量和程序块,是在类加载时被加载的,只能初始化一次。

      java中提供两种动态机制加载类,new一个对象和调用静态代码是隐式机制;另外一种是显示机制,这种机制也包括两种方式:1,java.lang.Class中的forName();2,java.lang.ClassLoader中的loadClass();对于显示机制通过forName或loadClass的参数判断是否在类初始化时加载static变量和程序块,如此时不加载将会在初始化第一个实例时加载。

1,static修饰方法时,此方法不能被子类重写,若子类中出现同样的static方法,则是对父类static方法的隐藏,不是重写覆盖(对象级);

      对于static方法的访问,可通过类名访问,或者通过创建一个实例进行访问,但一定要记住对于static方法,是被所有实例共享的;

      通过父类使用子类时,即A a = new B(),A是B的父类;当调用父类实例的static方法时,同时此方法被子类隐藏,即子类与父类中同时存在这个static方法,这时调用的是父类的static方法,而不是子类的static方法;这不同于非static方法的调用,对于非static方法调用的是子类的方法,对于static方法的这种情况,叫做静态绑定;

      static方法不能引用类中的非static变量,必须通过类的实例进行引用。

2,static修饰类时,此类只能为内部类。

      非static内部类不可拥有static数据或static内部类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章