重学java-对象与类(1)

重学java-对象与类

1. 面向对象程序设计概述

面对对象程序设计(object-oriented programming,OOP)是当今主流的程序设计范式,取代了20世纪70年代的“结构化”编程技术。

面对对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。程序中的对象可以来自标准库或者自定义。

传统结构化程序设计:首先确定如何操作数据,然后再决定如何组织数据结构,以便于操作数据;

OOP:将数据的结构放在第一位,然后再考虑操作数据的算法。

1.1类

  1. 类(class)是构造对象的模板或蓝图。由类构造(construct)对象的过程称为创建类的实例(instance)
  2. 封装(encapsulation,有时也称数据隐藏),从形式上看,封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。实现封装的关键在于,绝对不能让类中方法直接访问其他类的实例字段,程序只能通过对象的方法与对象数据进行交互。
  3. 对象中的数据称为实例字段(instance field),操作数据的过程称为方法(method)。作为一个类的实例,特定对象都有一组特定的实例字段值。这些值的集合就是这个对象的当前状态(state)
  4. 继承(inheritance),是OOP的另一个原则,可以通过扩展其他类来构建新类,在扩展一个已有类时,这个扩展后的新类具有被扩展的类的全部属性和方法。

1.2对象

对象的三个特征:同时这些关键特征彼此之间会相互影响。

  • 行为:可以对对象完成的操作和应用的方法;
  • 状态:调用对象方法时,对象状态的变化;
  • 标识:具有相同行为和状态的对象的区分;

**识别类:**识别类的一个简单经验是在分析问题的过程中寻找名词,而方法对应着动词。

1.3类之间的关系

  • 依赖(“uses -a”):如果一个类的方法使用或操纵另一个类的对象,就说一个类依赖于另一个类。应该尽可能地将相互依赖的类减至最少。用软件工程的术语来说,就是尽可能减少类之间的耦合。
  • 聚合(“has - a”):意味类A的对象包含类B的对象。
  • 继承(“is -a”):表示一个更特殊的类与一个更一般的类之间的关系。

2.使用预定义类

要想使用对象,首先必须构造对象,并指定其初始状态。然后对对象应用方法。java中使用构造器(constructor, 或称构造函数)构造新实例。

以Date类对象构造为例:

Date deadline = new Date();

其中的deadline是日期类的对象变量,对象变量并没有实际包含一个对象,它只是引用了一个对象。在java中,任何对象变量的值都是对存储在另外 一个地方的某个对象的引用。表达式new Date()构造了一个Date类型的对象,它的值是对新创建对象的一个引用。

3. Java类库中的Date类与LocalDate类

Java类库设计者将保存时间和给时间点命名分开。标准的java类库中分别包含了两个类:一个是用来表示时间点的Date类;另一个是用熟悉的日历表示法表示日期的LocalDate类。

在构造LocalDate类的对象时,不用使用构造器,而是通过静态工厂方法(factory method),这些方法会调用构造器。

  • LocalDate.now()
  • LocalDate.of(1999, 12, 31)
  • LocalDate的get方法:getYear、getMonthValue、getDayOfMonth

Date类更多细节:Date (Java SE 11 & JDK 11 ) (runoob.com)

  • 常用:toString()、Date()

LocalDate类更多细节:LocalDate (Java SE 11 & JDK 11 ) (runoob.com)

  • 常用方法:LocalDate.now()、LocalDate.of()、LocalDate.plusDays()

3.1 更改器方法与访问器方法

  1. 访问器方法:只访问对象而不修改对象的方法成为访问器方法。例如,LocalDate.getYear和GregorianCalendar.get等
  2. 更改器方法:调用更改器方法会使原来的对象状态改变,而不是新创建一个新的对象,例如GregorianCalendar.add方法。而LocalDate.plusDays方法会生成一个新的LocalDate对象,然后将新生成的对象赋值给一个对象变量。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方华Elton

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值