4-Java类与对象

类与对象


面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。对象可以来自标准库,也可以自定义。传统的结构化设计是通过一系列的过程(算法)来求解问题,只要确定了过程,就需要考虑存储数据的方式,所以就得先确定如何操作数据,然后才能组织数据,这也为什么有《算法+数据结构=程序》的原因。而面向对象编程,则相反,每个对象相对独立,只关注对象本身即可。

cmd-markdown-logo

什么是类

类(class)是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。
封装(encapsulation),跟对象有关,是将数据和行为组合起来,对对象的使用者隐藏了数据的具体实现。对象包含属性和方法。封装的关键便是不可以直接访问某个类的属性。
一般设计类,都是提取名词,动词。

什么是对象

对象具有三个特征:

对象的行为
对象的状态
对象的标识

重载:相同的方法名,不同的参数(参数类型,参数个数,参数顺序)

类之间的关系

在类之间,最常见的关系:

依赖(use-a)
聚合(has-a)
继承(is-a)

依赖是最常见,最明显的一种关系,。通常应该尽可能减少类之间的依赖,做到某个类改变不影响别的类,是一种降低耦合度表现。
聚合,也叫关联,是一种具体且易于理解的关系。如类A的对象包含类B的对象。
继承,表示特殊与一般的关系。通常继承的类,都比较具体。

初始化块

不带static块
带static块

不带static的初始化块,在每次创建对象时,初始化一次。
带static的初始化块,在类加载时只初始化一次。

对象析构和finalize方法

如c++有显式的析构方法,其中放入一些当对象不再使用时需要执行的清理代码,常见析构操作,便是回收对象所占存储空间。
Java有自己的垃圾回收机制,不需要人工回收,也不支持析构。当年,如果使用了内存之外的资源,如文件读写,将其回收还是有必要的。通常会为类添加finalize方法,该方法会在垃圾回收器回收对象之前调用,但在实际应用中,不使用finalize,因为很难知道这个方法什么时间会被调用。有两种方式:

System.runFinalizersOnExit(true),不安全
Runtime.addShutdownHook(Thrad hook),注册jvm关闭的钩子
如果需要立刻关闭,使用close清理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值