6 静态变量,成员变量 局部变量间的区别 l 书写位置 静态 :类中方法外 加了一个关键字 static 成员: 类中方法外 没有static 局部: 方法内 l 在内存中的位置(所属): 静态:方法区里面的静态区,属于类 成员:堆,属于对象 局部:栈,属于方法 l 生命周期 静态:随着类的加载而加载 随着类的消失而消失(虚拟机停掉才会消失) 成员:随着对象的创建而存在 随着对象消失而消失(当一个对象没有任何指向的时候 过一段时间垃圾回收器就会来清理) 局部:随着方法的调用而存在 随着方法的执行完毕而消失 l 初始化: 静态:有默认初始化 成员:有默认初始化 局部:没有了默认初始化 所以在使用之前必须先赋值 l 调用不同: 静态:类名可以调用 对象名也可以调用 成员:只能对象名调用 局部:只能在方法内部直接使用 无需在前面加限定 -------------------------------------------------------------------------------------------------------------- 7 代码块 t用大括号{}括起来的代码就叫代码块 可以分为静态代码块,构造代码块,局部代码块,同步代码块 l 局部代码块: 在方法内部,限定变量生命周期,及早释放,提高内存利用率 l 构造代码块 在方法外面 类里面 每创建一次对象 就执行一次 而且是在构造方法执行前执行的,所以说就可以把构造方法里面的共性内容写到构造代码块里面 l 静态代码块(☆☆☆☆☆): 在方法外面 类里面 stati,随着类的加载而执行 只执行一次 ,做一些全局初始化的内容 t一个对象的默认初始化顺序 默认初始化 >> 显示初始化 >> 构造初始化 (构造代码块和显示初始化一起顺序执行,顺序执行就是谁的代码在前面就先执行) l 当静态代码块和main方法在同一个类中是,不论静态代码块在main方法前还是后,都必须先执行静态代码块 l 测试类调用基本类代码块的执行顺序 测试类静态代码块 >> main方法 >> 基本类静态代码块 >> 测试类构造代码块 >> 测试类构造方法 >> 基本类构造代码块 >>基本类构造方法 l 子类继承父类时代码块执行顺序 父类静态代码块 >> 子类静态代码块 >> 父类构造代码块>>父类构造方法>> 子类构造代码块>>子类构造方法 -------------------------------------------------------------------------------------------------------------- 8 继承 tJava中继承的特点: 只支持单继承 不支持多继承,但是支持多层继承 l (子类可以访问父类中的内容,但是父类无法访问子类中的内容) l 每个子类对象在堆内存的空间中,都会单独的划出一部分来存储父类的成员变量,而不是多个子类共享一个父类空间 t继承的注意事项: * 子类能够继承父类所有非私有的成员 * 父类的构造方法不能被子类继承,但是子类可以通过super去访问 * 不能为了部分功能而去继承 l 父类中的成员变量私有以后,子类无法继承,但是可以通过构造方法或set get访问 l父类的成员方法私有以后,子类将无法继承也无法访问这个成员方法 l子类和父类出现同名的变量时,采用就近原则,
|