第 4 章 对象与类

目录

  • 4.1 面向对象程序设计概述

    • 4.1.2 对象,93
    • 4.1.4 类之间的关系,94
  • 4.2 使用预定义类
    • 4.2.2 Java 类库中的 LocalDate 类,98
  • 4.3 用户自定义类
    • 4.3.1 Employee 类,103
    • 4.3.2 多个源文件使用,105
    • 4.3.4 构造器,106
    • 4.3.5 隐式参数与显式参数,108
    • 4.3.8 私有方法,111
  • 4.4 静态域与静态方法
    • 4.4.1 静态域,112
    • 4.4.2 静态常量,113
    • 4.4.3 静态方法,114
    • 4.4.4 工厂方法,115
    • 4.4.5 main 方法,115
  • 4.5 方法参数,118
  • 4.6 对象构造
    • 4.6.2 默认域初始化,123
    • 4.6.3 无参数的构造器,124
    • 4.6.4 显式域初始化,125
    • 4.6.5 参数名,125
    • 4.6.6 调用另一个构造器,126
    • 4.6.7 初始化块,127
  • 4.7 包,131
  • 4.10 类设计技巧,144

4.1 面向对象程序设计概述

4.1.2 对象,93

对象的行为(behavior)—— 方法
对象的状态(state)—— 域
对象标识(identity)—— 实例

4.1.4 类之间的关系,94

依赖(“uses-a”)
组合(“has-a”)
继承(“is-a”)

4.2 使用预定义类

4.2.2 Java 类库中的 LocalDate 类,98

日历表示法
不可变的类

4.3 用户自定义类

4.3.1 Employee 类,103

实例域
构造器
实例方法

4.3.2 多个源文件使用,105

两种编译源程序的方法。

使用通配符调用 Java 编译器:

Java Employee*.java

键入以下命令:

javac EmployeeTest.java

Java 编译器内置了 make 功能。

4.3.4 构造器,106

初始化实例域

  1. 构造器与类同名
  2. 每个类可以有一个以上的构造器(重载)
  3. 构造器可以有 0 个、1 个或多个参数(隐式参数 this
  4. 构造器没有返回值
  5. 构造器总是伴随着 new 操作一起调用

4.3.5 隐式参数与显式参数,108

关键字 this 表示隐式参数,一个对象的引用。

4.3.8 私有方法,111

4.3.9 final 实例域,112

构建对象时必须初始化 final 实例域。final 实例域的值设置之后,不能够再对它进行修改。

final 修饰符大都应用于基本(primitive)类型域,或不可变(immutable)类的的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。)

对于可变的类,使用 final 修饰符可能会对读者造成混乱。

4.4 静态域与静态方法

4.4.1 静态域,112

属于类,而不属于独立的对象。

4.4.2 静态常量,113

Math.PI

System.out

4.4.3 静态方法,114

静态方法是一种不能向对象实施操作的方法。

可以认为静态方法是没有 this 参数的方法,没有隐式参数。

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

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

Java static 关键字的含义:属于类且不属于类对象的变量和函数。

4.4.4 工厂方法,115

4.4.5 main 方法,115

每一个类可以有一个 main 方法。这是一个常用于对类进行单元测试的技巧。

4.5 方法参数,118

按值调用(call by value)
按引用调用(call by reference)

Java 语言采用按值调用。方法得到的是所有参数值的一个拷贝,方法不能修改传递给它的任何参数变量的内容。

4.6 对象构造

4.6.2 默认域初始化,123

隐式域初始化:0、false、null

4.6.3 无参数的构造器,124

4.6.4 显式域初始化,125

在声明中赋值

4.6.5 参数名,125

一种常用的技巧: 参数使用同名屏蔽实例域,实例域采用 this 形式访问。

this 指示隐式参数,也就是所构造的对象。

4.6.6 调用另一个构造器,126

this(...)

4.6.7 初始化块,127

三种初始化数据域的方法:

  1. 在声明中赋值
  2. 在初始化块中设置值
  3. 在构造器中设置值

为了避免循环定义,不要读取在后面初始化的域。 参考 Java 语言规范 8.3.2.3 节。

建议将初始化块放在域定义之后。

调用构造器的具体处理步骤:

  1. 所有数据域初始化为默认值(0、false、null)。
  2. 按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。
  3. 如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。
  4. 执行这个构造器主体。

两种初始化静态域的方法:

  1. 在声明中赋值
  2. 在静态初始化块中设置值

在类第一次加载的时候,将会进行静态域的初始化。

调用构造器的具体处理步骤(静态域、静态初始化块):

  1. 静态域初始化、静态初始化块(在类第一次加载的时候,依照类定义的顺序执行)
  2. 实例域初始化、对象初始化块(依照类定义的顺序执行)
  3. 构造器

4.7 包,131

从编译器的角度来看,嵌套的包之间没有任何关系。
例如,java.util 包 与 java.util.jar 包 毫无关系。
每一个都拥有一个独立的类集合。

4.10 类设计技巧,144

  1. 一定要保证数据私有(数据的表现形式很可能会改变,但它们的使用方式却不会经常发生变化。)
  2. 一定要对数据初始化(Java 不对局部变量进行初始化,但是会对对象的实例域进行隐式初始化。应该显式初始化)
  3. 不要在类中使用过多的基本类型(使类更加易于理解且易于修改)
  4. 不是所有的域都需要独立的域访问器和域修改器
  5. 将职责过多的类进行分解
  6. 类名和方法名要能够体现它们的职责(类名:名词、形容词+名词、动名词+名词)
  7. 优先使用不可变的类

原文地址:https://www.cnblogs.com/clipboard/p/12380469.html

时间: 2024-08-05 23:19:36

第 4 章 对象与类的相关文章

第九章 对象和类

对象和类 一 对象和类 类是模子,确定对象将会拥有的特征(属性)和行为(方法): 类是相同属性和方法的一组对象的集合: 类是对象的类型: 1. 属性 特定的值或特征. 2. 方法 对象执行的操作,就是能做什么. 3. 定义类 JAVA程序都以类class为组织单元: 组成:属性和方法: 4. 成员变量与局部变量的区别 作用域不同: 初始值不同:Java会给成员变量默认一个初始值,而局部变量则不会: 同一个方法中不允许存在同名的局部变量名,而在不同方法中则可以: 就近原则:局部与成员同名了,优先取

Java第二章----对象和类

从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对象 名词解释 OOA-Object Oriented Analysis-面向对象分析 OOD-Object Oriented Design-面向对象设计 OOP-Object Oriented Programming-面向对象程序设计 面向对象基本特性 万物皆可为对象:任何一件事物都可以表示为程序中

《C++ Primer Plus》第10章 对象和类 学习笔记

面向对象编程强调的是程序如何表示数据.使用 OOP 方法解决编程问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据.然后,设计一个类来实现该接口.一般来说,私有数据成员存储信息,公有成员函数(又称为方法)提供访问数据的唯一途径.类将数据和方法组合成一个单元,其私有性实现数据隐藏.通常,将类声明分成两部分组成,这两部分通常保存在不同的文件中.类声明(包括由函数原型表示的方法)应放到头文件中.定义成员函数的源代码放在方法文件中.这样便将接口描述与实现细节分开了.从理论上说,只需知道

《Java开发手册》学习进程之第6章对象和类

传统的过程化程序设计通过设计一系列的过程——算法来求解问题.这些过程一旦被确定,下一步就要开始寻找存储数据的方式,即“程序 = 算法 + 数据结构”.而面向对象的程序设计(即OOP,Object Oriented Programming)调换了这个次序,将数据放在第一位,之后再考虑操纵数据的算法. 在OOP中,程序被看作是相互协作的对象集合,每个对象都是某个类的实例.所有类构成了一个通过继承关系相联系的层次结构. 由于面向过程的编程模式是先将一系列过程(即函数)设计好再通过参数输入求解的,所以对

第4章 对象与类

4.1 面向对象程序设计概述 4.1.1 类 类(class)是构造对象的模版或蓝图.由类构造(construct)对象的过程称为创建类的实例(instance). 标准Java库提供几千个类供使用,但还是需要创建自己的类,以描述应用程序所对应的问题域中的对象. 封装(encapsulation,也称为数据隐藏),对对象的使用者隐藏了数据的实现方式.实现封装的关键就是绝不能让其他类的方法访问本类的实例域.封装给对象赋予了黑盒特性.这是提高重用性和可靠性的关键. 对象状态:每个特定对象都有一组特定

第03章 对象、类型和值

本章介绍数据的存储和使用. 为了读取用户的输入,需要在内存中开辟出一块区域,存放用户数据,一般地我们称这块区域为对象.一个对象就是具有某种类型的存储区域,类型指定该区域可以放置什么样的数据.为了引用该区域,我们将该区域命名,称为变量. 一个变量就是内存中的一块具有特定类型的区域. 在C++中,整数放在int变量中,字符串放在string变量中,int, string就是类型. 一.输入 试看一个读取输入的程序: 1 #include <iostream> 2 using namespace s

Java核心技术第四章----对象与类重难点总结

一.类之间的关系 类和类之间的关系,耦合度从高到低: is -a.继承.实现 has-a.组合.聚合.关联 user-a.依赖. 要求是:高内聚.低耦合. 继承("is-a") 继承(Inheritance),即"is-a"关系,是一种用于表示特殊与一般关系的.表示类与类(或者接口与接口)之间的父子关系.一般而言,如果类A扩展类B,类A不但包含从类B继承的方法,还会拥有一些额外的功能.在JAVA中,用关键字extends表示继承关系 实现(Implementatio

java学习笔记(Core Java)4 对象与类

第四章 对象与类oop三个特征:对象的行为.状态.标识类之间关系:依赖,聚合,继承依赖:一个类的方法操纵另一个类的对象.(尽量减少这种耦合情况)聚合(has-a)一个类作为另一个类的变量而存在继承(is-a) 如果只声明一个类变量,而没有在堆空间中开辟没存,那么这个变量就不能调用类中的方法因为这个变量没有引用对象 !!一个对象的变量并没有实际包含一个对象,而仅仅引用了一个对象 Data data;等同于:Data *data; //它只代表一个指针,而不拥有对象数据 get/set 访问器 一个

第1章 类和对象——定义类和创建对象

1.1     定义类.创建对象 在编程时,要定义类,然后在创建这个类的对象(实例). 1.1.1 定义类 定义类的语法个式如下: 访问修饰符 Class 类名 {     类的成员1:     ................     类的成员n:       } 各项的含义如下. 1)  “访问修饰符”用来限制类的作用范围或访问级别,类的修饰符只有public和internal两种(嵌套类除外).其中,声明为public的类可以被任何其他类访问:声明为internal的类智只能从同一个程序集