面向对象2

来源:互联网 发布:与外国人学外语知乎 编辑:程序博客网 时间:2024/06/06 23:34


Day09 Java基础 面向对象 (2)

一. 构造代码块
小孩子出生之后必须的哭,自带被动
 
 【要求】创建完对象,就的哭
 [解决方案1]
  把cry方法放到构造函数里
 [瓶颈]
  万一有1000个构造函数?
 
 [问题]
  用构造函数调用cry方法可以实现,但是如果构造函数过多,会导致代码过于臃肿,只要这个对象创建,就一定要
  执行这个方法
 
 
 Java中的构造代码块 :
  {
   执行的代码;
  }
  
  [发现]不管调用那个一个构造函数,都会执行cry方法,但是这个cry并不在构造函数里面
  而是在构造代码块
  
  构造代码块:
   对一个类的所有对象进行一个统一的初始化操作,只要这个对象被创建,就会执行
  
  
 【位置】
  在构造函数之前,在成员变量之后
  
  
 代码块分为三大类:
  1. 构造代码块
  2. 局部代码块 (基本不用了)  缩短局部变量的生存周期
  3. 静态代码块  static
  
二. 构造函数,构造代码块和定义时默认值优先级问题
在Java中,有三种对于成员变量赋初值操作;
   1. 构造函数
   2. 构造代码块
   3. 定义时默认值
   
   优先级问题:
    当存在构造函数的时候,构造函数中对于成员变量的修改是最终值
   
   其次:1. 定义时的默认值  ======  2. 构造代码块
    谁在后面,谁确定最终值
   
   Java编译器在编译代码的时候,会把我们的代码进行重新排序,
    会将成员变量定义放在整个类的最前面  
  
三. this关键字
 就近原则
  
  在类当中如果存在同名的变量名,Java编译器会认为最近的变量名是该语句操作的变量
  
  this 这个!这儿! 对象自己
  
  谁调用这个函数或者方法,谁就是this
  this代表调用当前方法的类对象
  
  this 关键字作用:
   1. 如果在同一个函数中,出现了和成员变量同名的变量名,可以利用this 来区分不同的变量,
    this.成员变量
    表示使用的是成员变量
   2. this关键字还能调用类当中的其他函数,这里包括成员方法和构造函数
  
 
 this 关键字不单单能调用成员方法,还能调用构造函数
 
 格式:
  this(参数);
  
 注意事项:
  1. 如果一个构造函数A通过this关键字调用构造函数B,那么this(参数)必须在构造函数A的第一个行
    2. 两个构造函数不能通过this关键字相互调用,语法不通过