Java面向对象编程:从基础到实践
立即解锁
发布时间: 2025-08-18 01:52:38 阅读量: 1 订阅数: 9 

# Java面向对象编程:从基础到实践
## 1. 鼠标类方法解析
### 1.1 显示和成长方法
鼠标类(Mouse)有两个重要方法:`display` 和 `grow`。`display` 方法用于打印鼠标的年龄和体重,逻辑简单直接。而 `grow` 方法模拟鼠标一天的体重增长,其体重增长公式是在当前体重的基础上增加一定百分比的重量,这意味着鼠标在其生命周期内每天都会持续生长。不过,这个公式只是对正常体重增长的简单模拟,并不十分准确。为了避免陷入复杂的数学计算,该公式被有意简化。
### 1.2 类注释规范
在鼠标类中,每个方法上方都有规范的注释。按照良好的编程风格,方法上方应该有一个空行、一行星号、一个空行、方法描述以及另一个空行。这些空行和星号用于分隔方法,而方法描述则能让阅读代码的人快速了解方法的功能。
## 2. 驱动类介绍
### 2.1 驱动类的概念
驱动是一个常见的计算机术语,指的是运行或“驱动”其他事物的软件。例如,打印机驱动是负责运行打印机的程序。同样,驱动类是负责运行另一个类的类。以 `MouseDriver` 类为例,它负责驱动 `Mouse` 类,通过创建 `Mouse` 对象并对其进行操作。
### 2.2 驱动类的结构和特点
通常,驱动类只包含一个 `main` 方法,它是程序的起点。驱动类调用被驱动类来创建对象并进行操作,而被驱动类则负责执行对象的创建和操作请求。一般来说,被驱动类的代码通常比驱动类长,因为实现这些任务需要大部分的程序代码。
### 2.3 驱动类的文件存储
驱动类(如 `MouseDriver` 类)与被驱动类存储在不同的文件中。为了让驱动类能被外部访问,它必须是公共类。每个公共类都必须存储在一个与类名相同的单独文件中,所以 `MouseDriver` 类必须存储在名为 `MouseDriver.java` 的文件中。为了让 `MouseDriver` 的代码能找到 `Mouse` 类,这两个类应该位于同一个目录下。
以下是 `MouseDriver` 类的代码示例:
```java
/*********************************************
* MouseDriver.java
* Dean & Dean
*
* This is a driver for the Mouse class.
*********************************************/
import java.util.Scanner;
public class MouseDriver
{
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
double growthRate;
Mouse gus = new Mouse();
Mouse jaq = new Mouse();
System.out.print("Enter % growth rate: ");
growthRate = stdIn.nextDouble();
gus.setPercentGrowthRate(growthRate);
jaq.setPercentGrowthRate(growthRate);
gus.grow();
jaq.grow();
gus.grow();
gus.display();
jaq.display();
} // end main
} // end class MouseDriver
```
## 3. 引用变量
### 3.1 引用变量的定义和作用
在 `MouseDriver` 类中,我们创建了 `Mouse` 对象,并使用 `gus` 和 `jaq` 这两个引用变量来引用这些对象。引用变量存储的是对象的“引用”,更准确地说,它保存的是对象在内存中的地址。
### 3.2 行业术语差异
在行业中,大多数 Java 程序员不使用“引用变量”这个术语,而是直接使用“对象”。这种做法模糊了引用变量和对象之间的区别。实际上,对象存储一组数据,而引用变量存储这些数据在内存中的位置。理解对象和引用变量之间的区别有助于理解 Java 代码的行为。
### 3.3 引用变量的声明、实例化和赋值
在使用引用变量之前,必须先声明它。声明引用变量的过程与声明基本变量类似,唯一的区别是在左边写的是类名而不是基本类型。例如:
```java
Mouse gus;
```
要创建一个对象,需要使用 `new` 运算符。例如,要创建一个 `Mouse` 对象,可以使用 `new Mouse()`。创建对象的正式术语是实例化对象,`new` 运算符用于实例化对象。实例化对象后,通常会将其赋值给引用变量,例如:
```java
gus = new Mouse();
```
也可以在一个语句中完成引用变量的声明和赋值,即初始化:
```java
Mouse gus = new Mouse();
```
### 3.4 调用实例方法
实例化对象并将其引用赋值给引用变量后,可以使用以下语法调用实例方法:
```
<reference-variable>.<method-name>(<comma-separated-arguments>);
```
例如,在 `MouseDriver` 类中有以下三个实例方法调用示例:
```java
gus.setPercentGrowthRate(growthRate);
gus.grow();
gus.display();
```
当程序调用一个方法时,控制权从调用语句传递到被调用方法的第一个可执行语句。方法执行完毕后,控制权返回到调用方法中调用语句的下一个位置。
## 4. 调用对象和 `this` 引用
### 4.1 调用对象的识别
当调用实例方法时,它总是与一个调用对象相关联。可以通过查看实例方法调用语句中圆点左边的内容来识别调用对象。例如,在以下 `main` 方法中:
```java
public static void main(String[] args)
{
Scanner stdIn = new Scanner(System.in);
double growthRate;
Mouse gus = new Mouse();
System.out.print("Enter % growth rate: ");
growthRate = stdIn.nextDouble();
gus.setPercentGrowthRate(growthRate);
gus.grow();
gus.display();
} // end main
```
`gus` 对象是以下语句的调用对象:
```java
gus.setPercentGrowthRate(growthRate);
gus.grow();
gus.display();
```
此外,`stdIn` 对象是 `growthRate = stdIn.nextDouble();` 语句的调用对象。
### 4.2 `this` 引用的作用
在被调用方法内部,`this` 引用代表调用对象,但它本身并不告诉你具体是哪个对象。例如,在 `Mouse` 类的 `grow` 方法中:
```java
public void grow()
{
this.weight +=
(0.01 * this.percentGrowthRate * this.weight);
this.age++;
} // end grow
```
`this` 引用提醒我们 `weight` 和 `age` 是调用对象的实例变量。同样,在 `setPercentGrowthRate` 方法中:
```java
public void setPercentGrowthRate(double percentGrowthRate)
{
this.percentGrowthRate = percentGrowthRate;
} // end setPercentGrowthRate
```
`this` 引用表明左边的变量是调用对象的实例变量,它还帮助编译器和人类区分左右两边的变量。Java 的 `this` 引用提供了一种标准的方式来进行区分并显示变量之间的关系,避免了使用略有不同的名称带来的混淆和编程错误。
## 5. 实例变量
### 5.1 实例变量的默认
0
0
复制全文
相关推荐










