CodeGym /课程 /JAVA 25 SELF /类与对象的概念

类与对象的概念

JAVA 25 SELF
第 14 级 , 课程 1
可用

1. 什么是类和对象

先从一个类比开始。想象一张汽车的设计图。设计图上标明车有四个轮子、发动机、颜色、座椅等。但设计图本身不会在路上行驶、不会发出发动机的轰鸣,也不需要汽油。它只是关于汽车如何构成的描述。

在编程中就像这样的“蓝图”(或模板),它定义了其实例将拥有哪些数据(字段)和行为(方法)。

对象就是根据这张蓝图“装配”的真实汽车,即具体的实例。每个对象都有自己的状态(例如,一辆车是红色,另一辆是蓝色)以及行为:每个对象都可以执行类中定义的动作(例如行驶、刹车、鸣笛)。

生活中的示例

  • 类: (Person) —— 描述一个人有姓名、年龄、身高,并且可以说话或跑步。
  • 对象: 瓦夏、彼佳、卡佳 —— 具体的人,每个人都有自己的姓名和年龄。
对象 1 对象 2
Person
name = "瓦夏" 
age = 25
name = "卡佳" 
age = 30

为什么类很重要?

  • 把相关的变量和方法组织在一起。
  • 用相同的结构创建任意多个对象,但各自拥有不同的数据。
  • 便于描述复杂实体:例如“银行账户”“商品”“图书”“用户”。

2. 类的声明语法

在 Java 中,类通过关键字 class 来声明。其后是类名(约定俗成——首字母大写),然后是花括号,字段和方法写在花括号内。

最简单的示例

public class Person {
    // 这里将放置字段和方法
}

说明:

  • public —— 访问修饰符。
  • class —— 告诉编译器:“我在声明一个类”。
  • Person —— 类名(自行设定,但首字母要大写)。

类命名的重要规则

  • 类名应以大写字母开头(例如 Car、Account、Book)。
  • 类名中不允许有空格和特殊字符,除了下划线和 $(但这种情况很少)。
  • 如果名称由多个单词组成,使用 CamelCase 风格:BankAccount、BookStore。

类写在哪里?

类可以在单独的文件中声明(通常就是这样做:一个文件——一个类),也可以声明在另一个类的内部(关于嵌套类稍后再讲)。

例如,文件 Person.java


public class Person {
    // 字段和方法
}

3. 类的字段和方法(简述)

目前我们只声明了类,但它是空的——就像一个没有内容的盒子。我们来给它添加“属性”(字段)和“动作”(方法)。

字段(类内部的变量)

字段描述该类的每个对象将拥有哪些数据。


public class Person {
    String name; // 人的名字
    int age;     // 年龄
}

方法(类内部的函数)

方法描述对象能做什么。

public class Person {
    String name;
    int age;

    void sayHello() {
        System.out.println("你好,我叫 " + name + "!");
    }
}

说明:

  • void —— 方法不返回任何值(关于返回值我们稍后讨论)。
  • sayHello() —— 方法名,圆括号是必需的。
  • 在方法内部可以访问类的字段(例如 name)。

4. 创建对象

现在——见证“魔法”!如何把蓝图变成“真实的汽车”?这就要用到关键字 new

创建对象的语法


Person vasya = new Person();
  • Person —— 变量的类型(我们的类)。
  • vasya —— 变量名(可以任意取)。
  • new Person() —— 创建一个新的 Person 类型对象。

现在我们有了变量 vasya,它指向一个 Person 类的对象。该对象拥有自己的字段和方法。

访问字段和方法

通过点号来访问字段和方法:

vasya.name = "瓦夏";
vasya.age = 25;

vasya.sayHello(); // 将输出:你好,我叫 瓦夏!

可以创建任意多个对象

Person petya = new Person();
petya.name = "彼佳";
petya.age = 30;

petya.sayHello(); // 你好,我叫 彼佳!

每个对象都是彼此独立的“副本”,拥有各自的数据。

5. 与前面主题的联系

在今天之前,我们一直把所有变量和方法直接写在带有 main 方法的类里,并没有考虑创建自己的类型。现在我们可以创建自己的“数据与函数容器”了。

这带来了巨大的可能性!你可以描述任务中出现的任何实体:客户、商品、账户、订单、动物、汽车——无所不包。程序会变得更加结构化、可读且可扩展。

示例:我们的第一个自定义类

让我们为一个小程序编写一个简单的类——比如“银行账户”(BankAccount)。我们会在课程进展中不断扩展这个示例。

public class BankAccount {
    String owner;     // 账户持有人
    int balance;      // 账户余额

    void printInfo() {
        System.out.println("持有人: " + owner + ", 余额: " + balance + " 欧元。");
    }
}

现在在主方法 main 中(它仍然是运行程序所必需的)我们可以创建该类的对象:

public class Main {
    public static void main(String[] args) {
        BankAccount account1 = new BankAccount();
        account1.owner = "伊万";
        account1.balance = 1000;
        account1.printInfo(); // 持有人: 伊万, 余额: 1000 欧元。

        BankAccount account2 = new BankAccount();
        account2.owner = "玛丽娅";
        account2.balance = 2000;
        account2.printInfo(); // 持有人: 玛丽娅, 余额: 2000 欧元。
    }
}

请注意:每个对象都有自己的字段取值。如果你修改了 account1 的余额,这不会影响到 account2

可视化示意:类与对象

graph TD
    subgraph Class
        Person["Class Person | name:String | age:int | sayHello()"]
    end

    subgraph Objects
        vasya["vasya : Person | name = 'Vasya' | age = 20"]
        petya["petya : Person | name = 'Petya' | age = 25"]
    end

    vasya --> Person
    petya --> Person

说明:

  • Person —— 类(模板)。
  • vasyapetya —— 根据该模板创建的对象(实例)。

6. 声明类与创建对象时的常见错误

错误 1:类名以小写字母开头。
在 Java 中有这样的约定(编译器不会报错,但所有有经验的程序员都会“吐槽”!):类名应以大写字母开头。不要写 class person —— 要写 class Person。

错误 2:缺少花括号。
不要忘记,类体必须始终放在花括号中。

public class Person // 错误!
    String name;

正确:

public class Person {
    String name;
}

错误 3:未创建对象就尝试访问类的字段和方法。
如果方法或字段没有声明为 static,就只能通过对象来访问它们:

Person.sayHello(); // 错误!

正确:

Person vasya = new Person();
vasya.sayHello();

错误 4:文件名与类名不一致(针对 public 类)。
如果类被声明为 public,文件名必须与类名一致:

// 文件 Person.java
public class Person { ... }

如果文件名不同,编译器将报错。

错误 5:未初始化对象就使用类的实例字段。
类的字段(非 static)属于对象,而不是类本身。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION