0
点赞
收藏
分享

微信扫一扫

面向对象基础:类与对象,构造器的魔法,你真的懂了吗?

(全文目录:)

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

  今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

  我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

前言

  在编程的世界里,面向对象(Object-Oriented Programming,简称OOP)几乎是每一位开发者必经的阶段。我们把“面向对象”当做编程的基石,就像建房子前,必须先有地基一样,理解OOP的核心概念,才可以在代码的世界中游刃有余。那面向对象的基本元素是什么呢?答案就是“类”和“对象”。

  说到这里,可能很多人会心一笑,觉得这不就是我们学编程时的基础概念吗?的确如此!但很多初学者常常对类和对象的理解停留在表面,直到某一天在写实际的程序时,才发现“类”与“对象”之间隐藏的深意。那么,今天我们就从这些面向对象的基础开始,探索它们背后更加有趣的世界。

类与对象的概念:每个人都是一个“类”

  想象一下,你在一个大公司的会议室里,大家围坐一圈,讨论着公司的未来发展。每个人都有自己的职位、工作内容、以及所属部门。其实,这就像是面向对象编程中的“类”和“对象”的关系。

  • 类(Class):就像是一个模板,它定义了对象应该具备什么样的属性和方法。类是对象的抽象定义,是一个蓝图。
  • 对象(Object):是类的实例,是具体化的个体。它拥有类定义的属性和行为,并且可以在程序中操作。

例子:类与对象

让我们用一个简单的例子来展示类和对象的区别。

// 定义一个Person类
public class Person {
    // 类的属性
    String name;
    int age;

    // 类的方法
    public void introduce() {
        System.out.println("Hi, my name is " + name + " and I am " + age + " years old.");
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建对象
        Person person1 = new Person();
        person1.name = "Alice";
        person1.age = 25;

        // 调用对象的方法
        person1.introduce();  // 输出:Hi, my name is Alice and I am 25 years old.
    }
}

  在这个例子中,Person 就是一个类,它定义了每个 Person 对象的属性(nameage)以及行为(introduce 方法)。而 person1 则是 Person 类的一个具体对象,通过 new 关键字创建,并赋予它实际的值。

类与对象的图示

classDiagram
    class Person {
        +String name
        +int age
        +introduce()
    }
    
    class Main {
        +main(String[] args)
    }

    Main --> Person : Creates

构造器的定义与重载:类的“启动引擎”

  在现实中,每个人从出生开始就有自己的名字和年龄。那么在程序中,当我们创建一个对象时,如何为对象赋予初始值呢?这就是 构造器(Constructor)的作用。

构造器:为对象初始化

构造器是类的一种特殊方法,专门用于在创建对象时进行初始化。构造器的名称必须与类名相同,并且没有返回类型。

public class Person {
    String name;
    int age;

    // 构造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("Hi, my name is " + name + " and I am " + age + " years old.");
    }
}

  在上面的例子中,Person 类有一个构造器,构造器接收 nameage 两个参数,并用它们来初始化 Person 对象的属性。当我们创建 Person 对象时,构造器会自动被调用来初始化对象的属性。

构造器的重载:同一个名字,不同的参数

有时候,我们希望通过不同的方式来创建对象,例如,我们可能希望有一个默认构造器,也可以有一个带参数的构造器。这时候我们就用到 构造器重载

public class Person {
    String name;
    int age;

    // 默认构造器
    public Person() {
        this.name = "Unknown";
        this.age = 0;
    }

    // 带参数的构造器
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void introduce() {
        System.out.println("Hi, my name is " + name + " and I am " + age + " years old.");
    }
}

  在上面的例子中,Person 类有两个构造器,一个是默认构造器,没有参数,另一个是带有 nameage 参数的构造器。你可以根据需要选择使用不同的构造器来创建对象。

构造器的重载图示

classDiagram
    class Person {
        +String name
        +int age
        +Person()
        +Person(String, int)
        +introduce()
    }

    class Main {
        +main(String[] args)
    }

    Main --> Person : Creates with parameters

this 关键字的使用:指向“当前对象”的箭头

  在类中,有时我们需要区分成员变量和方法中的局部变量,尤其是在构造器中,参数和类的成员变量可能有相同的名称。为了避免混淆,我们使用 this 关键字来指代当前对象的成员变量。

this:指向当前对象

public class Person {
    String name;
    int age;

    // 构造器
    public Person(String name, int age) {
        this.name = name;  // 通过 this 区分成员变量和参数
        this.age = age;
    }

    public void introduce() {
        System.out.println("Hi, my name is " + name + " and I am " + age + " years old.");
    }
}

  在这个例子中,this.namethis.age 表示当前对象的成员变量,而 nameage 则是构造器参数。this 就是指向当前对象本身。

对象的创建与销毁:生命周期管理

  在程序中,当你通过 new 关键字创建一个对象时,你的程序实际上是在内存中分配了空间来存储这个对象的数据。这就像是一个工厂生产了一件产品,产品被存放在仓库中,直到我们不再需要它。

对象的创建:new 关键字

Person person1 = new Person("Alice", 25);  // 创建对象

  在上面的代码中,new Person() 就是通过构造器创建了一个 Person 对象。这个对象会被分配到内存中。

对象的销毁:垃圾回收机制

  Java 的垃圾回收机制会自动管理对象的销毁。我们无需显式地销毁对象,只需要确保没有任何引用指向该对象,垃圾回收器会在适当的时候回收对象占用的内存。

person1 = null;  // 断开引用,垃圾回收器可以回收这个对象

  通过断开引用,person1 就不再指向那个 Person 对象,这时如果没有其他地方引用它,垃圾回收器就会在合适的时机自动销毁这个对象。

对象生命周期图示

graph TD;
    A[创建对象] --> B[分配内存];
    B --> C[对象在内存中存在];
    C --> D{没有引用指向对象};
    D -->|是| E[垃圾回收];
    D -->|否| F[对象继续存在];

总结:从类到对象,一切都从这里开始

  面向对象编程的核心就是理解“类”和“对象”的关系,构造器如何为对象初始化数据,this 关键字如何指向当前对象,以及如何管理对象的生命周期。它们共同组成了面向对象编程的基础,所有的复杂系统,都是在这些简单而强大的概念上建立起来的。

  掌握了这些基础,你就可以更加自如地在编程的世界中构建属于自己的“类”和“对象”。就像在构建一座城市时,你要先规划好道路、建筑和基础设施,而面向对象的这些概念正是你“城市”的基础设施。

  所以,别小看这些看似简单的概念,它们将是你成为一名高级程序员的第一步!

... ...

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

... ...

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。 ⭐️若有疑问,就请评论留言告诉我叭。

版权声明:本文由作者原创,转载请注明出处,谢谢支持!

举报

相关推荐

0 条评论