类和对象是 Java 面向对象编程的核心概念,类是对一类事物的抽象描述,定义了事物的属性(成员变量)和行为(方法);对象则是类的具体实例,是可操作的实体。掌握类和对象的创建方法,以及成员变量的调用规则,是编写面向对象程序的基础。
一、Java 类和对象的创建方法
(一)创建类:定义事物的模板
类的创建需使用class关键字,语法格式为:
修饰符 class 类名 { // 成员变量(属性) // 方法(行为)}
修饰符:可省略或使用public(公开类,类名需与文件名一致)、private(私有类,仅内部可见)等。
类名:遵循大驼峰命名法(首字母大写,如Student、Car),需见名知意。
示例:定义一个Student类描述学生信息
public class Student { // 成员变量(属性) String name; // 姓名 int age; // 年龄 String major; // 专业 // 方法(行为,暂不定义具体内容) void study() { System.out.println(name + "正在学习"); }}
(二)创建对象:实例化类的实体
对象是类的具体实例,通过new关键字创建,语法格式为:
类名 对象名 = new 类名 ();
示例:基于Student类创建对象
public class Main { public static void main(String[] args) { // 创建Student类的对象stu1 Student stu1 = new Student(); // 创建Student类的另一个对象stu2 Student stu2 = new Student(); }}
创建对象的过程可理解为 “根据图纸(类)造房子(对象)”,每个对象拥有独立的内存空间,成员变量的值互不影响。
(三)对象的初始化:为属性赋值
创建对象后需为成员变量赋值,常见方式有两种:
直接赋值:通过对象名访问成员变量并赋值
stu1.name = "张三";stu1.age = 20;stu1.major = "计算机科学";
通过构造方法初始化:在类中定义构造方法,创建对象时直接传参赋值
// 在Student类中添加构造方法public Student(String n, int a, String m) { name = n; age = a; major = m;}// 创建对象时直接赋值Student stu3 = new Student("李四", 21, "软件工程");
构造方法是与类名同名的特殊方法,无返回值,用于对象初始化,若未自定义,Java 会默认生成无参构造方法。
二、类的成员变量调用方式
成员变量是类中定义的属性,需通过对象或类(静态变量)调用,具体方式取决于变量的修饰符。
(一)实例变量:通过对象调用
未被static修饰的成员变量为实例变量,属于对象私有,必须通过对象名调用,语法为:
对象名。成员变量名
示例:调用Student对象的实例变量
public class Main { public static void main(String[] args) { Student stu = new Student("王五", 19, "数学"); // 调用实例变量 System.out.println("姓名:" + stu.name); // 输出"姓名:王五" System.out.println("年龄:" + stu.age); // 输出"年龄:19" }}
(二)静态变量:通过类名或对象名调用
被static修饰的成员变量为静态变量(类变量),属于类本身,可通过类名直接调用(推荐),也可通过对象名调用,语法为:
类名。静态变量名 或 对象名。静态变量名
示例:在Student类中定义静态变量并调用
public class Student { static String school = "阳光大学"; // 静态变量(所有学生共享) // 其他成员变量和方法...}public class Main { public static void main(String[] args) { // 通过类名调用静态变量(推荐) System.out.println("学校:" + Student.school); // 通过对象名调用静态变量(不推荐,易混淆实例变量) Student stu = new Student(); System.out.println("学校:" + stu.school); }}
静态变量被所有对象共享,修改后会影响所有对象,适合存储类级别的公共信息(如学校名称、系统版本)。
(三)私有成员变量:通过方法间接调用
被private修饰的成员变量为私有变量,无法直接通过对象名调用,需在类中定义getter方法(获取值)和setter方法(修改值)间接访问。
示例:访问私有成员变量
public class Student { private String id; // 私有变量(学号) // getter方法:获取id值 public String getId() { return id; } // setter方法:设置id值 public void setId(String newId) { id = newId; }}public class Main { public static void main(String[] args) { Student stu = new Student(); // 无法直接调用私有变量:stu.id = "2023001";(编译报错) // 通过setter方法设置值 stu.setId("2023001"); // 通过getter方法获取值 System.out.println("学号:" + stu.getId()); // 输出"学号:2023001" }}
私有变量的封装是面向对象的重要特性,可保护数据安全,仅允许通过指定方法修改。
三、注意事项
类名与文件名:public 类的类名必须与.java 文件名完全一致,否则编译报错。
对象的生命周期:对象不再被使用时,会被 Java 垃圾回收机制自动回收,释放内存。
成员变量的默认值:未赋值的成员变量有默认值(数值类型为 0,布尔类型为 false,引用类型为 null),局部变量(方法内定义)无默认值。
Java 类和对象的创建体现了面向对象的抽象与实例化思想,成员变量的调用则需区分实例变量、静态变量和私有变量的访问规则。掌握这些基础操作,是理解继承、多态等高级特性的前提,初学者应通过多编写类和对象的实例代码,加深对面向对象编程的理解。