当前教程
创建类
系列中的下一个

系列中的下一个: 定义方法

创建类

 

声明类

在名为 对象、类和接口 的部分中,面向对象概念的介绍使用了一个 Bicycle 类作为示例,其中赛车、山地自行车和双人自行车作为子类。以下是一个可能的 Bicycle 类实现的示例代码,以概述类声明。后续部分将逐步备份并解释类声明。目前,不要担心细节。

public class Bicycle {
        
    // the Bicycle class has
    // three fields
    public int cadence;
    public int gear;
    public int speed;
        
    // the Bicycle class has
    // one constructor
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    // the Bicycle class has
    // four methods
    public void setCadence(int newValue) {
        cadence = newValue;
    }
        
    public void setGear(int newValue) {
        gear = newValue;
    }
        
    public void applyBrake(int decrement) {
        speed -= decrement;
    }
        
    public void speedUp(int increment) {
        speed += increment;
    }
}

MountainBike 类的类声明,它是 Bicycle 的子类,可能如下所示

public class MountainBike extends Bicycle {
        
    // the MountainBike subclass has
    // one field
    public int seatHeight;

    // the MountainBike subclass has
    // one constructor
    public MountainBike(int startHeight, int startCadence,
                        int startSpeed, int startGear) {
        super(startCadence, startSpeed, startGear);
        seatHeight = startHeight;
    }   
        
    // the MountainBike subclass has
    // one method
    public void setHeight(int newValue) {
        seatHeight = newValue;
    }   
}

MountainBike 继承了 Bicycle 的所有字段和方法,并添加了字段 seatHeight 和一个用于设置它的方法(山地自行车的座椅可以上下移动,以适应地形要求)。

您已经看到以以下方式定义的类

class MyClass {
    // field, constructor, and 
    // method declarations
}

这是一个类声明。类体(大括号之间的区域)包含所有为从类创建的对象提供生命周期的代码:用于初始化新对象的构造函数、用于提供类及其对象状态的字段声明,以及用于实现类及其对象行为的方法。

前面的类声明是最小的。它只包含类声明中必需的那些组件。您可以在类声明的开头提供有关类的更多信息,例如其超类的名称、它是否实现任何接口等等。例如,

class MyClass extends MySuperClass implements YourInterface {
    // field, constructor, and
    // method declarations
}

表示 MyClassMySuperClass 的子类,并且它实现了 YourInterface 接口。

您还可以在最开始添加修饰符,如 publicprivate — 因此您可以看到类声明的开头行可能会变得相当复杂。修饰符 publicprivate 决定了哪些其他类可以访问 MyClass,将在本节后面讨论。有关接口和继承的部分将解释如何在类声明中使用 extendsimplements 关键字以及原因。目前,您不必担心这些额外的复杂情况。

一般来说,类声明可以按顺序包含以下组件

  1. 修饰符,如 publicprivate 和您将在后面遇到的其他一些修饰符。(但是,请注意,private 修饰符只能应用于嵌套类。)
  2. 类名,按照惯例,首字母大写。
  3. 类的父类(超类)的名称(如果有),前面是关键字 extends。一个类只能扩展(子类)一个父类。
  4. 类实现的接口的逗号分隔列表(如果有),前面是关键字 implements。一个类可以实现多个接口。
  5. 类体,用大括号 {} 括起来。

 

声明成员变量

有几种类型的变量

  • 类中的成员变量——这些称为字段。
  • 方法或代码块中的变量——这些称为局部变量。
  • 方法声明中的变量——这些称为参数。
  • Bicycle 类使用以下代码行来定义其字段
public int cadence;
public int gear;
public int speed;

字段声明按顺序由三个组件组成

  1. 零个或多个修饰符,如 publicprivate
  2. 字段的类型。
  3. 字段的名称。

Bicycle 的字段名为 cadencegearspeed,它们都是整数类型(int)。public 关键字将这些字段标识为公共成员,任何可以访问该类的对象都可以访问它们。

 

控制谁有权访问成员

使用的第一个(最左边的)修饰符允许您控制哪些其他类可以访问成员字段。目前,只考虑 publicprivate。其他访问修饰符将在后面讨论。

  • public 修饰符——该字段可从所有类访问。
  • private 修饰符——该字段只能在其自身类中访问。

本着封装的精神,通常将字段设为私有。这意味着它们只能从 Bicycle 类中直接访问。但是,我们仍然需要访问这些值。这可以通过添加公共方法来间接完成,这些方法为我们获取字段值

public class Bicycle {
        
    private int cadence;
    private int gear;
    private int speed;
        
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
    }
        
    public int getCadence() {
        return cadence;
    }
        
    public void setCadence(int newValue) {
        cadence = newValue;
    }
        
    public int getGear() {
        return gear;
    }
        
    public void setGear(int newValue) {
        gear = newValue;
    }
        
    public int getSpeed() {
        return speed;
    }
        
    public void applyBrake(int decrement) {
        speed -= decrement;
    }
        
    public void speedUp(int increment) {
        speed += increment;
    }
}

 

设置变量的类型

所有变量都必须有类型。您可以使用基本类型,如 intfloatboolean 等。或者,您可以使用引用类型,如字符串、数组或对象。

 

命名变量

所有变量,无论是字段、局部变量还是参数,都遵循与语言基础部分中介绍的相同的命名规则和约定,变量命名

在本节中,请注意,方法和类名使用相同的命名规则和约定,只是

  • 类名的第一个字母应大写,并且
  • 方法名中的第一个(或唯一)单词应为动词。

上次更新: 2024 年 1 月 5 日


当前教程
创建类
系列中的下一个

系列中的下一个: 定义方法