侧边栏壁纸
  • 累计撰写 57 篇文章
  • 累计创建 10 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

4、对象和类

yilee
2023-04-04 / 0 评论 / 0 点赞 / 48 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-05-31,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

第四章 对象和类

4.1 面向对象程序设计概述

  1. 对象的三个主要特性

    • 对象的行为(behavior)
    • 对象的状态(state)
    • 对象标识(identity)
  2. 类之间的关系

    • 依赖(“uses-a”):如果一个类的方法操纵另一个类的对象, 我们就说一个类依赖于另一个类。

    • 聚合(“has-a”):聚合关系意味着类A 的对象包含类B 的对象。

    • 继承(“is-a”):如果类A 扩展类B, 类A 不但包含从类B 继承的方法,还会拥有一些额外的功能

4.2 使用预定义类

  1. Date类 Date birthday = new Date();

  2. LocalDate 类

    LocalDate example =  LocalDate.now();
    LocalDate newYearsEve = LocalDate.of(1999, 12, 31);
    int year = newYearsEve.getYearO; // 1999
    int month = newYearsEve.getMonthValueO; // 12
    int day = newYearsEve.getDayOfMonth(); // 31
    // plusDays 方法会得到一个新的LocalDate
    LocalDate aThousandDaysLater = newYearsEve.piusDays(1000):
    year = aThousandDaysLater.getYear();// 2002
    month = aThousandDaysLater.getMonthValue(); // 09
    day = aThousandDaysLater.getDayOfMonth(); // 26
    // Date 类还有getDay、getMonth 以及getYear 等方法, 然而并不推荐使用这些方法
    

4.3 用户自定义类

Java类封装注意:

  • 不要在构造器中定义与实例域重名的局部变量
  • 不要编写返回引用可变对象的访问器方法
  • 如果需要返回一个可变数据域的拷贝, 就应该使用clone方法
  • 方法可以访问所属类的私有特性( feature ), 而不仅限于访问隐式参数的私有特性

4.5 方法参数

Java 程序设计语言对对象采用的不是引用调用,而是值传递

 public static void swap(Employee x, Employee y){
     Employee temp = x;
     x = y;
     y = temp;
 }
 
 Employee a = new Employee("Alice");
 Employee b = new Employee("Bob");
 swap(a, b);
 // x和y分别为a和b的拷贝,并不是引用,如下图
 // 一个方法不能修改一个基本数据类型的参数(即数值型或布尔型)。
 // 一个方法可以改变一个对象参数的状态
 // 一个方法不能让对象参数引用一个新对象

4d064585608e48bcad3115c94ea5aa62

4.6 对象构造

​ 如果在构造器中没有显式地给域赋予初值, 那么就会被自动地赋为默认值: 数值为0、布尔值为false、对象引用为 null。

4.10 类设计技巧

  • 一定要保证数据私有
  • 一定要对数据初始化
  • 不要在类中使用过多的基本类型
  • 不是所有的域都需要独立的域访问器和域更改器
  • 将职责过多的类进行分解
  • 类名和方法名要能够体现它们的职责
  • 优先使用不可变的类(如果类是不可变的,就可以安全地在多个线程间共享其对象)

API注释

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

java.time.LocalDate 8

static LocalTime now()
// 构造一个表示当前日期的对象。
static LocalTime of (int year, int month, int day)
// 构造一个表示给定日期的对象。
int getYear()
int getMonthValue()
int getDayOfMonth()
// 得到当前日期的年、月和曰。
DayOfWeek getDayOfWeek()
// 得到当前日期是星期几, 作为DayOfWeek 类的一个实例返回。调用getValue 来得到1 ~ 7 之间的一个数, 表示这是星期几, 1 表示星期一, 7 表示星期日。
LocalDate piusDays(int n)
LocalDate minusDays(int n)
// 生成当前日期之后或之前n 天的日期。

4.6.7 初始化块

java.util.Random 1.0

Random()
// 构造一个新的随机数生成器。
int nextInt(int n) 1.2
// 返回一个0 ~ n-1之间的随机数。
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区