Java核心技术|02类与对象

02类与对象

一.什么是对象

我们说面向对象,那么对象是什么呢?它有什么特性呢?

对象是对客观事物的抽象,对状态与行为的(封装)包装.

封装,有时称为数据隐藏,从形式上看 ,不过是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。

对象中的数据称为实例域(instance field),操纵数据的过程称为方法(method)
对于每个特定的类实例,都有一组特定的实例域值。这些值的集合就是这个对象的当前状态。

以下是对象的三个特性:
  • 对象的行为(behavior) --> 可以对对象施加哪些操作,或可以对对象施加哪些方法?
  • 对象的状态(state)–> 当施加那些方法时,对象如何响应?
  • 对象的标识(identity)–> 如何辨别具有相同的行为与状态的不同对象。

对象的状态可能改变,但是这个改变不是自发的,必须调用方法实现。
如果不经调用对象的方法便改变了对象的状态,说明对象的封装性遭到了破坏。

在Java中, 使用类(class)这样的概念来对现实事物进行抽象描述.
而对象, 则归属于某个类.

例如

同班的同学是"同学类", 而具体到同桌"张三",就是一个对象. 是一个有名字有性别等实例属性, 以及学习\运动等方法的具体个体.

二.静态方法

静态方法是一种不能向对象实施操作的方法
可以认为静态方法是没有this参数的方法

以下两种情况下使用静态方法:

  • 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供。
  • 一个方法只需要访问类的静态域。

NumberFormat工具类
静态方法还有另外一种常见的用途:使用静态工厂方法来构造对象
NumberFormat类为什么不用构造器完成这些操作呢?主要有以下两个原因:

  • 无法命名构造器。构造器的名字必须与类名相同。但是,这里希望将得到的货币实例和百分比实例采用不同的名字。
  • 当使用构造器时,无法改变所构造的对象类型。而Factory方法将返回一个DecimalFormat类对象,这是NumberFormat的子类。

三.对象构造

【对象构造】

  • 构造器的重载,重载解析. 方法的签名: 方法名及参数类型
  • 默认域初始化: 如果在构造器中没有显式地给域赋予初值,那么就会被自动地赋为默认值:数值为0 \ 布尔值为false \ 对象引用为null
  • 显式域初始化:在执行构造器之前,先执行赋值操作. 可以调用方法对域进行初始化.
  • 调用另一个构造器: 需要构造器的第一个语句就调用另一个构造器, 即第一个语句就需要是 this(…)
  • 初始化块: 在类的声明中,可以包含多个代码块; 只要构造类的对象,这些块就会被执行.首先运行初始化块,然后才运行构造器的主体部分.

由于初始化数据域有多种途径,列出构造过程的所有路径可能相当混乱.
下面是调用构造器的具体处理步骤:
1. 所有数据域被初始化为默认值
2. 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块
3. 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体
4. 执行这个构造器主体

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值