Java初识面向对象+类与对象+封装核心

Java 初识面向对象:类与对象 + 封装核心

1. 面向对象编程(OOP) vs 面向过程

维度面向过程(Process-Oriented)面向对象(Object-Oriented)
思考方式步骤为核心对象为核心
代表语言CJava、C++、Python 等
优点流程清晰,适合简单脚本代码复用性高、易维护、易扩展
核心思想“先做什么,再做什么”“找到合适的对象,让对象干活”

Java 是纯面向对象的语言,所有代码必须写在类里面。


2. 类(Class)与 对象(Object)

  • :是对一类事物的抽象描述(蓝图、模板)。
  • 对象:是类具体实例化后的产物(真实存在的东西)。

通俗比喻

  • 类 = 汽车设计图纸
  • 对象 = 用图纸造出来的具体一辆汽车(宝马、奔驰都可以)

定义类的语法

public class 类名 {
    // 1. 成员变量(属性、字段)
    // 2. 成员方法(行为)
    // 3. 构造方法
}

示例:定义一个学生类

public class Student {
    // 成员变量(字段)
    String name;      // 姓名
    int age;          // 年龄
    String studentId; // 学号

    // 成员方法(行为)
    public void study() {
        System.out.println(name + "正在学习...");
    }

    public void eat() {
        System.out.println(name + "正在吃饭");
    }
}

3. 创建对象与使用对象

public class TestStudent {
    public static void main(String[] args) {
        // 创建对象(实例化)
        Student s1 = new Student();
        Student s2 = new Student();

        // 通过对象.成员 的方式访问
        s1.name = "张三";
        s1.age = 20;
        s1.studentId = "2024001";

        s2.name = "李四";
        s2.age = 21;

        s1.study();   // 张三正在学习...
        s2.eat();     // 李四正在吃饭
    }
}

new 关键字:在堆内存中开辟空间,创建对象。


4. 封装(Encapsulation)—— OOP 三大特性之首

核心思想隐藏内部实现细节,只暴露必要接口,保护数据安全。

封装的实现步骤(标准写法)

  1. 将成员变量用 private 修饰(私有化)
  2. 提供 public 的 getter 和 setter 方法
  3. 可以在 setter 中加入数据校验逻辑
public class Student {
    // 私有化成员变量
    private String name;
    private int age;
    private String studentId;

    // Getter 方法
    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    // Setter 方法(带校验)
    public void setName(String name) {
        if (name != null && name.length() > 0) {
            this.name = name;
        }
    }

    public void setAge(int age) {
        if (age >= 0 && age <= 150) {
            this.age = age;
        } else {
            System.out.println("年龄不合法!");
        }
    }

    public void setStudentId(String studentId) {
        this.studentId = studentId;
    }
}

为什么这样写?

  • 外部无法直接修改 age = -1000 这种非法数据
  • 代码维护性更好,后期改内部实现不影响外部调用

5. this 关键字

this 代表当前对象自身。

常见用途

public class Student {
    private String name;

    public void setName(String name) {
        this.name = name;   // 区分形参和成员变量
    }

    public void show() {
        System.out.println(this.name);  // this 可以省略
    }
}

6. 构造方法(Constructor)

  • 作用:创建对象时给成员变量初始化
  • 特点
  • 方法名与类名完全相同
  • 没有返回值(连 void 都不写)
  • 系统默认提供一个无参构造方法
public class Student {
    private String name;
    private int age;

    // 无参构造
    public Student() {
        System.out.println("无参构造被调用");
    }

    // 有参构造(推荐)
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

使用

Student s1 = new Student();           // 调用无参
Student s2 = new Student("张三", 20);  // 调用有参

注意:一旦你写了有参构造,系统不再提供默认无参构造。


7. 内存图简析(非常重要)

  • 类文件(.class)在方法区
  • 对象实例在堆内存
  • 引用变量(s1、s2)在栈内存,保存堆中对象的地址

多个引用指向同一个对象时,修改一个会影响所有。


总结:核心要点记忆口诀

  • 类是模板,对象是实体
  • 封装 = private + getter/setter
  • 构造方法用于初始化
  • this 代表当前对象
  • new 关键字创建对象

练习建议(立即动手):

  1. 写一个 Phone 类(品牌、价格、颜色),封装好属性,提供构造方法和 getter/setter
  2. 写一个 Account 类(账号、余额),余额不能为负
  3. 尝试创建多个对象,观察 this 的作用

想继续深入哪个部分?

  • 下一讲:继承(extends)与方法重写 + 多态
  • 静态成员(static) 详解
  • 包、权限修饰符、代码块
  • Java 内存模型图解

告诉我你的进度或具体想重点掌握的内容,我继续给你写下一节!

文章已创建 5321

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部