何为“类”?(Java基础语法)
类 (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)
写法: 构造方法的参数列表是空的 ()。
作用: 提供一种快速、便捷的创建对象的方式,通常会为对象的属性赋予一个合理的默认值。
示例:
codeJavapublic 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 的那一刻,就通过参数将外部数据传递进来,对新对象进行精确的初始化。
示例:
codeJavapublic 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 时传入的参数列表决定了调用哪一个。