黑马程序员技术交流社区

标题: 面向对象中名词和关键字总结2 [打印本页]

作者: 北极1989    时间: 2016-3-27 22:32
标题: 面向对象中名词和关键字总结2
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子类和父类出现同名的变量时,采用就近原则,






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2