什么是面向对象编程?¶
想象你要设计一个手机游戏,里面有“玩家”这个角色。每个玩家都有名字、等级、血量(属性),还能攻击、移动、升级(行为)。在Java中,“玩家”就是一个类,而具体某个玩家(比如“小明”)就是这个类的一个对象。面向对象编程(OOP)的核心是把现实中的事物抽象成“类”,再通过“对象”来模拟和操作这些事物。
类:对象的“设计图纸”¶
类是对象的模板,规定了对象有什么属性(数据)和行为(方法)。比如定义一个Person类,用来描述“人”的特征:
class Person {
// 成员变量(属性):描述对象的状态
String name; // 姓名
int age; // 年龄
// 成员方法(行为):描述对象的功能
void sayHello() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
}
}
- 成员变量:
name和age描述了“人”的基本信息(状态)。 - 成员方法:
sayHello()描述了“人”的行为(功能)。
实例化对象:从“图纸”到“真实物品”¶
类只是设计图,要使用它,需要创建对象(实例化)。语法是:类名 对象名 = new 类名();
// 创建一个Person类的对象
Person person = new Person();
new Person():通过new关键字根据类的模板创建一个新对象。person:变量名,用来指向这个对象(类似“指针”,后续通过它访问对象的属性和方法)。
访问对象的成员¶
创建对象后,用 . 操作符访问对象的成员变量和方法:
1. 给成员变量赋值¶
person.name = "小明"; // 设置name属性
person.age = 20; // 设置age属性
2. 调用成员方法¶
person.sayHello(); // 输出:大家好,我叫小明,今年20岁。
构造方法:创建对象时初始化¶
如果想在创建对象时直接设置属性,可使用构造方法(与类名同名,无返回值):
class Person {
String name;
int age;
// 无参构造方法(Java默认提供,若自定义则消失)
public Person() {
name = "默认名字"; // 初始化默认值
age = 0;
}
// 带参构造方法:创建对象时直接赋值
public Person(String name, int age) {
this.name = name; // this表示当前对象,避免参数名与成员变量名冲突
this.age = age;
}
void sayHello() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
}
}
使用构造方法创建对象:¶
// 用无参构造
Person p1 = new Person();
p1.sayHello(); // 输出:大家好,我叫默认名字,今年0岁。
// 用带参构造
Person p2 = new Person("小红", 18);
p2.sayHello(); // 输出:大家好,我叫小红,今年18岁。
完整示例:从类到对象的实战¶
class Person {
String name;
int age;
// 无参构造
public Person() {}
// 带参构造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
void sayHello() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
}
}
// 主类(程序入口)
public class Main {
public static void main(String[] args) {
// 创建对象
Person p1 = new Person("小明", 20);
Person p2 = new Person();
// 调用方法
p1.sayHello(); // 输出:大家好,我叫小明,今年20岁。
p2.name = "小刚";
p2.age = 22;
p2.sayHello(); // 输出:大家好,我叫小刚,今年22岁。
}
}
关键注意点¶
- 命名规范:类名首字母大写(如
Person),成员变量和方法首字母小写(如name、sayHello)。 - 默认值:成员变量不赋值时会有默认值(如
int默认0,String默认null)。 - 对象独立:每个对象的成员变量互不影响(如
p1和p2修改自己的name不会影响对方)。 - 封装建议:实际开发中,成员变量通常用
private修饰(隐藏内部细节),通过getter/setter方法访问(如getName()获取名字)。
总结¶
类是“设计图”,对象是“真实物品”。通过new实例化对象,用.访问成员,构造方法初始化属性,就能完成Java面向对象的基础操作。掌握类与对象后,后续学习封装、继承、多态会更轻松!