【Java基础知识 17】面向对象编程
文章目录
- 一、对象
- 1. 为什么需要对象?
- 2. 类与对象的关系
- 2.1 定义类
- 2.2 创建和使用对象
- 3. 对象的内存模型
- 定义明星类(Star.java)
- 4. 对象的默认值
- 5. 对象的意义与优势
一、对象
对象是面向对象编程的核心概念,它是一种特殊的数据结构,能够封装一个事物的属性(数据)和行为(操作),从而在程序中完整地代表现实世界中的事物。
1. 为什么需要对象?
编程的本质是解决现实世界的问题,而现实世界是由无数相互关联的事物组成的。传统的变量和数组在描述复杂事物时存在明显局限:
- 变量:仅能存储单一数据,如
int max = 15;
只能表示一个分数,无法关联到具体的人。 - 数组:虽能存储多个数据,但要求数据类型统一,如
String[] names = {"小明","小红","小蓝"};
无法区分每个元素的实际含义,也不能直接对数据进行逻辑操作。
对象的出现正是为了弥补这些不足,它可以: - 同时存储不同类型的关联数据(如一个学生的姓名、年龄、成绩等)
- 为数据绑定专属的操作方法(如学生可以有 “考试”、“选课” 等行为)
- 使程序结构更贴近现实世界的逻辑关系
例如,要表示一个人,需要同时记录姓名、年龄、性别、身高这些不同类型的信息:
public class Demo {public static void main(String[] args) {// 创建小明的People对象并设置属性People xm = new People();xm.name = "小明"; // 字符串类型xm.age = 18; // 整数类型xm.sex = "男"; // 字符串类型xm.height = 180; // 整数类型// 创建小红的People对象并设置属性People xh = new People();xh.name = "小红";xh.age = 19;xh.sex = "女";xh.height = 170;}
}
注意:上述代码直接运行会报错,因为对象不能凭空创建,必须先定义对象的结构(即类),就像盖房子需要先设计图纸一样。
2. 类与对象的关系
对象的创建依赖于 “类”(Class),二者的关系如同:
- 类 = 建筑图纸(定义了事物的结构和功能)
- 对象 = 按图纸建造的房子(根据定义创建的具体实例)
一个类可以创建多个对象,就像一张图纸可以建造多栋相同结构的房子。
2.1 定义类
类是对象的模板,定义了对象应包含的属性(数据)和方法(行为)。语法结构:
修饰符 class 类名 {// 定义属性(成员变量)数据类型 属性名1;数据类型 属性名2;// 定义方法(行为)修饰符 返回值类型 方法名() {// 方法体}
}
示例:定义一个 “手机” 类
/*** 手机类:描述手机的属性和功能*/
public class Phone {// 属性(成员变量)String brand; // 品牌String color; // 颜色double price; // 价格int storage; // 存储容量(GB)// 方法(行为)// 打电话public void makeCall(String number) {System.out.println(brand + "手机正在拨打:" + number);}// 发送短信public void sendMessage(String number, String content) {System.out.println("向" + number + "发送短信:" + content);}
}
2.2 创建和使用对象
创建对象的过程称为 “实例化”,通过new
关键字实现,语法:
// 创建对象
类名 对象名 = new 类名();// 访问属性
对象名.属性名 = 值; // 赋值
数据类型 变量 = 对象名.属性名; // 取值// 调用方法
对象名.方法名(参数);
示例:使用 Phone 类创建对象
public class TestPhone {public static void main(String[] args) {// 创建第一个手机对象(华为)Phone huawei = new Phone();huawei.brand = "华为";huawei.color = "黑色";huawei.price = 5999;huawei.storage = 256;// 使用手机功能huawei.makeCall("13800138000");huawei.sendMessage("13900139000", "晚上一起吃饭吧");// 创建第二个手机对象(苹果)Phone iphone = new Phone();iphone.brand = "苹果";iphone.color = "白色";iphone.price = 7999;iphone.storage = 512;// 使用手机功能iphone.makeCall("13700137000");iphone.sendMessage("13600136000", "这手机真好用");}
}
3. 对象的内存模型
定义明星类(Star.java)
对象在内存中占据独立的存储空间,主要分为三个部分:
- 栈内存:存储对象的引用(即对象在堆内存中的地址)
- 堆内存:存储对象的实际数据(属性值)
- 方法区:存储类的模板信息(属性定义、方法定义等)
重要特性:每个对象拥有独立的堆内存空间,修改一个对象的属性不会影响其他对象。
4. 对象的默认值
当创建对象但未给属性赋值时,Java 会自动为属性分配默认值,规则如下:
示例验证:
public class DefaultValueDemo {public static void main(String[] args) {Person p = new Person();System.out.println("姓名:" + p.name); // nullSystem.out.println("年龄:" + p.age); // 0System.out.println("身高:" + p.height); // 0.0System.out.println("是否学生:" + p.isStudent); // false}
}class Person {String name; // 引用类型int age; // 整数类型double height; // 浮点类型boolean isStudent;// 布尔类型
}
5. 对象的意义与优势
对象作为面向对象编程的核心,带来了诸多优势:
- 现实映射:通过对象直接映射现实事物,使程序设计更符合人类思维模式
- 封装性:将数据和操作数据的方法捆绑在一起,避免外部错误修改,提高代码安全性
- 可维护性:一个对象的修改不会影响其他对象,降低代码耦合度
- 可扩展性:可以通过继承(后续讲解)基于现有类创建新类,实现代码复用
- 模块化:每个对象可视为独立模块,便于多人协作开发大型项目
理解对象的核心概念,是掌握面向对象编程的基础。在此之上,还需深入学习构造方法、封装、继承、多态等核心特性,以此搭建完整的面向对象知识体系,最终掌握用其解决复杂问题的能力。