Java 类和对象

简介: 本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。

1. 概述

在本快速教程中,我们将了解 Java 编程语言的两个基本组成部分——类和对象。它们是面向对象编程 (OOP) 的基本概念,我们用它来模拟现实生活中的实体。

在 OOP 中,类是对象的蓝图或模板。我们用它们来描述实体的类型。

另一方面,对象是生命实体,由类创建。它们在各自的领域内包含某些状态,并通过各自的方法表现出某些行为。

2. 内容

简单来说,类代表一个定义或一种对象。在 Java 中,类可以包含字段、构造函数和方法。

让我们看一个使用代表汽车的简单 Java 类的示例:

java

代码解读

复制代码

class Car {

    // fields
    String type;
    String model;
    String color;
    int speed;

    // constructor
    Car(String type, String model, String color) {
        this.type = type;
        this.model = model;
        this.color = color;
    }

    // methods
    int increaseSpeed(int increment) {
        this.speed = this.speed + increment;
        return this.speed;
    }

    // ...
}

这个 Java 类通常表示一辆汽车。我们可以从这个类创建任何类型的汽车。我们使用字段来保存状态,并使用构造函数从这个类创建对象。

每个 Java 类默认都有一个空构造函数。如果我们没有像上面那样提供特定的实现,我们将使用它。以下是我们的Car类的默认构造函数:

java

代码解读

复制代码

Car(){}

此构造函数只是用默认值初始化对象的所有字段。字符串初始化为null,整数初始化为零。

现在,我们的类有一个特定的构造函数,因为我们希望我们的对象在创建它们时定义它们的字段:

java

代码解读

复制代码

Car(String type, String model) {
    // ...
}

综上所述,我们编写了一个定义汽车的类。其属性由字段描述,字段包含类的对象状态,其行为则使用方法来描述。

3. 对象

虽然类是在编译时翻译的,但对象是在运行时从类创建的

类的对象称为实例,我们使用构造函数创建并初始化它们:

java

代码解读

复制代码

Car focus = new Car("Ford", "Focus", "red");
Car auris = new Car("Toyota", "Auris", "blue");
Car golf = new Car("Volkswagen", "Golf", "green");

现在,我们已经创建了不同的Car对象,它们都来自同一个类。这就是重点,在一个地方定义蓝图,然后在多个地方多次重复使用它。

到目前为止,我们有三个Car对象,由于速度为零,它们都处于停放状态。我们可以通过调用increaseSpeed方法来改变这种情况:

java

代码解读

复制代码

focus.increaseSpeed(10);
auris.increaseSpeed(20);
golf.increaseSpeed(30);

现在,我们改变了汽车的状态——它们都以不同的速度行驶。

4.访问修饰符

在前面的示例中,我们省略了访问修饰符以简化代码。通过这样做,我们实际上使用了默认的 package-private 修饰符。该修饰符允许从同一包中的任何其他类访问该类。

通常,我们会对构造函数使用公共修饰符,以允许所有其他对象访问:

java

代码解读

复制代码

public Car(String type, String model, String color) {
        // ...
        }

我们类中的每个字段和方法也应该通过特定的修饰符定义访问控制。类通常具有public修饰符,但我们倾向于将字段保留为 private

字段保存对象的状态,因此我们希望控制对该状态的访问。我们可以将其中一些字段保留为private,将其他字段保留为 public。我们通过称为 getter 和 setter 的特定方法来实现这一点。

让我们看一下具有完全指定访问控制的类:

java

代码解读

复制代码

public class Car {
    private String type;
    // ...

    public Car(String type, String model, String color) {
        // ...
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getSpeed() {
        return speed;
    }

    // ...
}

我们的类被标记为 public,这意味着我们可以在任何包中使用它。 此外,构造函数也是public,这意味着我们可以在任何其他对象中从此类创建一个对象。

我们的字段被标记为 私有的,这意味着它们不能直接从我们的对象访问,但我们可以通过 getter 和 setter 访问它们。 type 和model 字段没有 getter 和 setter,因为它们保存着对象的内部数据。我们只能在初始化期间通过构造函数来定义它们 **

此外,颜色可以访问和更改,而 速度只能访问,不能更改。我们通过专门的公共方法increaseSpeed()declineSpeed() 强制调整速度。

换句话说,我们使用访问控制来封装对象的状态。

5. 结论

在本文中,我们介绍了 Java 语言的两个基本元素:类和对象,并展示了它们的使用方式和原因。介绍了访问控制的基础知识并演示了其用法。

要学习Java语言的其他概念,我们建议下一步阅读继承、super关键字和抽象类


转载来源:https://juejin.cn/post/7385464240917741608

相关文章
|
7月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
948 157
|
8月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
448 101
|
8月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
354 100
|
9月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
622 143
|
7月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
309 4
|
7月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
351 5
|
7月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
432 5
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
380 1
|
7月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
489 1
|
7月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
311 1