2.static 是在内存中分配一块区域,供整个类通用,全部的类的对象都享有它的共同的值java
static定义一个变量:实现的是类全部对象的共享,好比算网站的点击量的时候,经过一个static变量实现。网站
public class StaticTest { private static int i = 0; public int add(int i) { return this.i += i; } /** * @param args */ public static void main(String[] args) { StaticTest st = new StaticTest(); st.add(3); StaticTest st1 = new StaticTest(); st1.add(4); System.out.println(i); } }
代码中的i的值实现了共享,因而可知静态域保存在类的存储单元里,问不是保存对象的存储单元里。this
而final如同上面所讲的,定义常量或者方法不能覆盖,类不能继承。这里的方法不能覆盖可是能够重载:code
public class StaticTest { private static int i = 0; public final int add(int i) { return this.i += i; } }
public class StaticTest1 extends StaticTest { private int i = 0; public int add(String i) { return this.i += Integer.parseInt(i); } }