static final 和abstract修饰符



static final 和abstract修饰符。

1.static属性、方法

   用来修饰类中的属性、方法、语句块、和内部类等。

   静态成员一般在以下两种情况下使用:

  (1)如果一个方法总是以相同的方式运行,其行为和结果并不依赖于任何对象,也不需要创建对象就可以运行这个方法,这时候完全可以由类自身来运行这个方法。

  (2)当需要某个类的所有对象的信息时,如记录某个类的所有对象的个数,必须有一个依赖于类而又不是依赖于对象的变量来记录这个信息,依赖于对象的成员变量是不可能解决此类问题的。

   

  静态属性和实例属性的差别:

    1.static属性在整个类中只有一份,而实例属性是有多少个对象就有多少值。

    2.static属性在类加载的时候,被实例化,而实例属性在生成对象的时候被实例化。

    3.对static属性的访问。是直接通过类名后加属性名,并可以在没有生成任何对象之前访问,于对象无关。实例属性的访问则必须通过对象名后加属性访问。

 

static修饰代码块,称为静态代码块。表示这段代码在类加载的时候被执行,是一个类中最先运行的代码。

运行的顺序是:静态代码块最先执行,而构造方法紧随其后,然后才是按照主方法中的顺序运行方法。

  

2.final属性和方法


    final表示最终的、不变的,修饰类、类的属性、方法

       1.final修饰类表示最终的类,不能被继承,

       2.修饰属性,表示属性是不变的值,

       3.修饰方法,表示是最终的方法,不允许重写,

       4.修饰局部变量,表示只能一次赋值,赋值后就不能再改变了。

 

3.abstract 抽象类和抽象方法

声明一个类是抽象类,在类名前面鼻血加上abstract

抽象类不可以被实例化,不能生成抽象类的对象,但是能定义一个引用,抽象类只能用于继承扩展。

写抽象类和抽象方法时要注意两点:

1.一个类中只要包含抽象方法,那么这个类就必须被定义为抽象类,反之,即使一个类不包含任何抽象方法,这个类仍然可以被定义为抽象类

2.abstract和final不能同时使用,这两个关键字有着相反的含义,

abstract修饰方法和类,就是想让别人重写或者是继承的;而final是阻止重写和继承的,无法获得编译。

 

同样private和abstract也不能同时修饰方法,private阻止继承,也就阻止了重写实现,于abstract相违背。