Java学习第七天

																		2019/04/29                  小雨

一、* new创建对象做的三件事情:

  • 1.在堆中为对象开辟空间,成员属性会跟随对象进入到堆内存并赋默认值
  • 2.调用构造器为对象初始化信息
  • 3.将地址返回值引用
  • 构造器|构造方法|构造函数:
  • 构造器是一个特殊的方法,只能和new一起使用
  • 作用:
  •  初始化对象信息,不是用来创建对象的
    
  • 定义:
  •  构造方法的名字必须与当前的类名一致 ,不需要返回值不需要void
    
  •  修饰符 类名([参数列表]){
    
  •  	...
    
  •  }
    
  • 如果没有自定义构造器,编译器会自动为你添加空构造(不带参数的构造器)
  • 如果存在自定义构造器,编译器这时不会再提供任何构造器,包括空构造
  • 构造器是方法,方法就可以构成方法的重载
  • 调用不同的构造器,看创建对象时候()中的参数列表匹配哪一个构造器的参数列表
  • 修饰符可以是private,私有的,只能在本类中使用(单例)
  • 构造器不能使用final,static,abstract修饰
  • 总结:特殊的方法,只能通过new的使用使用,可以重载没有返回值和void,区分重载构造器看new后()的参数

二、** this: 指代当前new的对象,存储的就是当前对象的地址

  • 1).在构造器的首行通过this调用当前其他构造器
  •  this();  -->()匹配构造器的参数
    
  • 2).区分同名成员变量和局部变量
  •  如果不使用this,会发生就近原则 
    
  •  在构造器中,this指代当前new的对象
    
  •  在方法中,this指代当前调用成员方法的这个对象
    
  •  如果不存在同名变量的问题,默认省略this.
    
  •  如果存在同名变量的问题,默认就近原则,区分成员,this.,this.不能省略
    
  • 注意:
  • 1.在构造器的首行调用其他构造器时候不能相互调用
  • 2.如果不使用,会发生就近原则
  • 3.this不能使用在static修饰的方法中
  • 构造块在编译的时候会被放在构造器语句块中代码的最上面,如果存在this调用其他构造器,必然先调用其他构造器,因为this必须存在于首行才能调用其他构造器
    三、 * static 关键字 静态的
  • static修饰变量|静态变量|类变量,只能修饰成员变量,不能修饰局部变量
  • static修饰方法|静态方法|类方法
  • static修饰的内容的使用方式:
  •  				1.类名.
    
  •  				2.对象.
    
  • 注意:
  •  静态的内容是属于类的,成员的内容是属于对象的
    
  •  静态的内容是独一份的,这个类的所有对象共享这个类中的静态内容
    
  •  在静态的内容中只能直接使用静态的内容,不能直接使用成员的内容==>对象使用
    
  •  非静态的内容中,可以直接使用成员的内容,可以直接使用静态的内容 */
    

四、* 块 block–>{} ==>自成作用域

  • {}–>方法中,局部代码块|普通语句块 执行时机:调用方法
  • {}–>类中方法外,构造块 执行时机:创建对象
  • static{}–>静态块
  • 1.构造块先于构造器执行,如果有多个构造块,从上到下一次执行
  • 2.静态{}在第一次加载类的时候只执行一次,先于主方法执行,如果有多个静态块,从上到下一次执行
  • 静态块 — main —构造块—构造器

五、 * 使用debug调试:

  • 1.先打断点

  • 2.debug模式运行 f5进入细节 f6下一步执行 f7返回方法的调用出

  • System.gc() 通知系统回收,但是无权决定是否回收,什么时候回收

  • finalize() 在垃圾回收机制来回收垃圾第一步会调用的方法

  • 一定会调用finalize()方法的两种情况:

  •  					1.匿名对象
    
  •  					2.对象无引用状态
    

六、* 注意:不要定义与 jdk 相同的包,相同的类, 否则会引起很多你觉得莫名其妙的问题
*

  • 导包: 模糊匹配 *
  • 会拖慢编译效率,不会拖慢运行速度
  • 静态导入:单独导入类中的静态的内容
  •  可以导入变量可以导入方式
    

七、 * 为了解决安全隐患:在外部不能直接使用对象的属性

  • 新的关键字 private 私有的 成员修饰符,不能修饰局部变量
  • 私有的内容只能在当前类中使用*
  • 如何使用私有的属性:
  • 对使用的属性提供公共的访问方式 setter设置器 getter访问器
  • 面向对象的三大特性之一:
  • 封装:对外隐藏内部的实现细节,提供公共的访问方式就是封装
  • 属性私有,公共的访问方式是封装的一个具体的体现(不能说封装是私有)
  • 类,方法都是封装的体现
  • 以后写模板类,属性都要私有,提供公共的访问方式
  • 这种模板类|实体类|javabean
  • 1.类是公共的public修饰
  • 2.至少存在一个空构造
  • 3.属性私有
  • 4.公共的访问方式
    • 抽取对象的共性定义为类
  • 抽取类的共性定义为父类

八、* 为什么使用继承:

  • 为了提高代码的复用性
  • 如何使用继承(子承父业:拓展+延续):
  • 子类 extends 父类 子类继承父类 *
  • 使用继承优点:
  • 1.提高代码的复用性
  • 2.自动可以使用父类中的所有成员(属性和方法)
  • 3.子类可以定义属于自己的属性和功能–>扩展 *
  • 特点:
  • 父类可以有多个子类,但是一个子类只能有一个父类–>单继承
  • 单继承的优点:
  • 使用简单
  • 单继承的缺点:
  • 不便于后期维护
  • 父类|基类|超类
  • 子类|派生类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值