何为“类”?(Java基础语法) - 教程

admin | 世界杯足球赛事

类 (Class) OS:初学时,我们知道要把代码写成一步步的指令。但很快就会发现,很多指令需要被反复执行,非常繁琐。这时,“类”就像游戏里的“宏功能”,能把一套复杂的操作打包成一个“大招”,大大提升了我们的开发效率和代码质量。

官方术语:类是一个模板,它描述了一类对象的共同属性 (attributes) 和行为 (behaviors)。

个人理解 :类,就是把解决某个问题的一套“方法”和所需“变量”,封装成一个“类”,以后直接用这个“类”就行,不用再一步步重复操作。

作用: 类的主要作用就是作为创建对象的模板。我们通过设计的类,来确保所有根据它创建出的对象,都是行为正确、数据安全的。

举个例子:从“搓招”到“一键发招”在玩一个动作游戏时,一个新手玩家需要按顺序按 A(轻拳)、A(轻拳)、→(前)、B(重拳)才能打出一个简单的“连招”。这个过程不仅慢,还容易按错。

“类”就相当于一个“宏功能”或“自定义技能”。

我们可以设计一个类,它内部封装好了这一整套固定的按键顺序和逻辑。

以后,我们只需要创建一个这个技能的对象,然后调用它一个方法,角色就能瞬间、准确地打出这套连招。

类 -> (创建) -> 对象 -> (调用) -> 方法

一、 如何创建(定义)一个类?创建类,就是编写它的“设计图”。这遵循一个固定的语法结构。

基本语法codeJava

[修饰符] class 类名 {

// 1. 成员变量 (属性)

// 用来描述这类对象的状态

// 2. 构造方法 (Constructor)

// 用来初始化新创建的对象

// 3. 成员方法 (方法)

// 用来描述这类对象的行为

}

组成部分详解[修饰符] (Modifier)

最常用的就是 public。public class MyClass 意味着这个类可以被项目中的任何其他代码访问。

如果不写(class MyClass),则为默认的包访问权限。

对于初学者,一律使用 public 即可。

class 关键字

这是Java的关键字,固定写法,告诉编译器你正在定义一个类。

类名 (Class Name)

你为这个类起的名字。

命名规范: 必须遵循大驼峰命名法 (UpperCamelCase),即每个单词的首字母都大写,例如 Student, Car, ArrayList。

文件名必须和 public 类的类名完全一致(包括大小写),例如 Student 类必须保存在 Student.java 文件中。

{ ... } (类体)

大括号内是类的所有内容,包括下面要讲的三个核心组成部分。

二、 构造方法 (Constructor) - 类的“建造者”构造方法是一个非常特殊的方法,它在你使用 new 关键字创建对象时被自动调用。

构造方法的核心规则方法名必须与类名完全相同。这是辨别它的铁律。

没有返回值类型。连 void 都不需要写。

主要作用是初始化成员变量,为新生的对象赋予初始状态。

构造方法的组成[修饰符] 构造方法名([参数列表]) { // 方法体 }

修饰符: 通常是 public,与类的修饰符保持一致。

方法名: 必须是类名。

参数列表: 括号内的部分,可以为空,也可以包含一个或多个参数。

方法体: {} 内的代码,用于执行初始化逻辑。

三、 无参构造方法 vs. 有参构造方法一个类可以提供多种不同的“建造方案”,这就是通过构造方法重载 (Overloading) 实现的。最常见的就是提供“无参”和“有参”两种版本。

1. 无参构造方法 (No-Argument Constructor)写法: 构造方法的参数列表是空的 ()。

作用: 提供一种快速、便捷的创建对象的方式,通常会为对象的属性赋予一个合理的默认值。

示例:

codeJava

public class Student {

private String name;

private int age;

// 这就是无参构造方法

public Student() {

System.out.println("正在调用无参构造方法...");

this.name = "匿名"; // 赋予默认名字

this.age = 18; // 赋予默认年龄

}

}

如何调用:

codeJava

// new 后面跟的括号是空的,就会自动匹配并调用无参构造方法

Student stu1 = new Student();

// stu1 对象一生下来,name就是"匿名",age就是18

⭐ 特殊规则:默认构造方法

如果你一个构造方法都不写,Java编译器会自动为你提供一个看不见的、public的、方法体为空的无参构造方法。

codeJava

// 你只写了这样

public class Dog {}

// 编译器会自动帮你变成这样

public class Dog {

public Dog() {} // 自动添加

}

// 所以你依然可以这样创建对象:

Dog myDog = new Dog();

重要:一旦你手动写了任何一个构造方法(无论是有参还是无参),编译器就“罢工”了,不再提供任何默认构造方法。

2. 有参构造方法 (Parameterized Constructor)写法: 构造方法的参数列表 () 中包含一个或多个参数。

作用: 提供一种定制化的创建对象的方式,允许在 new 的那一刻,就通过参数将外部数据传递进来,对新对象进行精确的初始化。

示例:

codeJava

public class Student {

private String name;

private int age;

// 无参构造...

// 这就是有参构造方法

public Student(String name, int age) {

System.out.println("正在调用有参构造方法...");

// 使用 this 关键字,将参数的值赋给成员变量

this.name = name;

this.age = age;

}

}

如何调用:

codeJava

// new 后面括号里的参数,其类型、个数、顺序

// 必须和某个有参构造方法的参数列表完全匹配

Student stu2 = new Student("张三", 20);

// stu2 对象一生下来,name就是"张三",age就是20

四、 完整示例与总结codeJava

// Student.java

public class Student {

// 1. 成员变量 (属性)

private String name;

private int age;

// 2. 构造方法 (多种创建方案)

// 无参

public Student() {

this.name = "新生";

this.age = 18;

}

// 有参

public Student(String name, int age) {

this.name = name;

this.age = age;

}

// 3. 成员方法 (行为)

public void introduce() {

System.out.println("大家好,我叫 " + this.name + ",今年 " + this.age + " 岁。");

}

}

// Test.java (使用Student类)

public class Test {

public static void main(String[] args) {

// 调用无参构造,创建默认学生

Student defaultStudent = new Student();

defaultStudent.introduce(); // 输出: 大家好,我叫 新生,今年 18 岁。

// 调用有参构造,创建定制学生

Student customStudent = new Student("李四", 22);

customStudent.introduce(); // 输出: 大家好,我叫 李四,今年 22 岁。

}

}

总结:

创建类就是定义其框架 (public class ...)、属性 (成员变量) 和方法 (成员方法)。

构造方法是类中一个特殊部分,负责初始化 new 出来的新对象。

无参构造提供默认创建方式,有参构造提供定制化创建方式。

一个类可以有多个构造方法(重载),new 时传入的参数列表决定了调用哪一个。