首页 > 编程语言 >Java 入门指南:构造器

Java 入门指南:构造器

时间:2024-08-14 20:55:04浏览次数:10  
标签:指南 调用 Java name age 构造 Student public 入门

Java 构造器

在Java中,构造器(Constructor)是一种特殊的方法,用于创建和初始化对象。它与类名相同,没有返回类型(甚至不能写void),主要用于在对象创建时设置对象的初始状态。构造器在面向对象编程中起着至关重要的作用,它确保了每个对象在创建时都有一个有效的初始状态。在对象创建时,Java虚拟机(JVM)会自动调用构造器,以确保对象的初始状态。

构造器的基本语法

public class ClassName {  
    // 构造器  
    public ClassName() {  
        // 初始化代码  
    }  
}
  • 声明了一个公共(public)的类,名为 ClassName

  • 这是一个公共的无参数构造器,它没有做任何事情,只是简单地创建了一个新的 ClassName 对象。如果将来需要在这个构造器中执行一些初始化操作,可以在大括号 {} 中添加相应的代码。

构造器的类型

默认构造器

如果一个类没有显式定义任何构造器,Java编译器会自动提供一个无参数的默认构造器。这个默认构造器不做任何特殊操作,只是简单地创建一个对象。

public class Student {
    // 编译器会自动提供一个无参数的默认构造器
}

public class Main {
    public static void main(String[] args) {
        Student student = new Student(); // 调用默认构造器
    }
}
自定义构造器

可以定义一个或多个自定义构造器来初始化对象的不同状态。自定义构造器可以包含参数,用于设置对象的初始属性值。

public class Student {
    String name;
    int age;

    // 自定义构造器
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class Main {
    public static void main(String[] args) {
        Student student = new Student("Alice", 20); // 调用带参数的构造器
    }
}
构造器重载

构造器可以被重载,即在一个类中可以定义多个构造器,它们的参数列表(参数类型、个数或顺序)不同。这使得对象初始化更加灵活。

public class Student {
    String name;
    int age;

    // 无参数构造器
    public Student() {
        this.name = "Unknown";
        this.age = 0;
    }

    // 带一个参数的构造器
    public Student(String name) {
        this.name = name;
        this.age = 0;
    }

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

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student();
        Student student2 = new Student("Bob");
        Student student3 = new Student("Charlie", 22);
    }
}

构造器的调用

自动调用

在创建对象时,JVM会自动调用相应的构造器来初始化对象。

Student student = new Student("Alice", 20); // 调用带参数的构造器
在构造器中调用另一个构造器

在构造器中,可以使用 this 关键字调用同一类中的另一个构造器。这种调用必须是构造器中的第一条语句。

public class Student {
    String name;
    int age;

    public Student() {
        this("Unknown", 0); // 调用带参数的构造器
    }

    public Student(String name) {
        this(name, 0); // 调用带两个参数的构造器
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
在子类构造器中调用父类构造器

在子类的构造器中,可以使用 super 关键字调用父类的构造器。这种调用也必须是子类构造器中的第一条语句。

public class Person {
    String name;

    public Person(String name) {
        this.name = name;
    }
}

public class Student extends Person {
    int age;

    public Student(String name, int age) {
        super(name); // 调用父类的构造器
        this.age = age;
    }
}

构造器的注意事项

  1. 没有返回类型:构造器不能有返回类型(甚至不能写void),否则它会被认为是一个普通方法。
  2. 名称必须与类名相同:构造器的名称必须与类名完全相同。
  3. 自动调用:在创建对象时,JVM会自动调用构造器。
  4. 默认构造器:如果类中没有显式定义任何构造器,编译器会自动提供一个无参数的默认构造器。但是,一旦显式定义了构造器(无论是有参还是无参),编译器就不会再提供默认构造器。
  5. 构造器重载:可以在一个类中定义多个构造器,
  6. this 和 super 的使用:在构造器中,this 用于调用同一类中的另一个构造器,而 super 用于调用父类的构造器。这两种调用都必须是构造器中的第一条语句。

标签:指南,调用,Java,name,age,构造,Student,public,入门
From: https://blog.csdn.net/Zachyy/article/details/141173403

相关文章

  • Linux驱动入门实验班——SR501红外模块驱动(附百问网视频链接)
    目录 一、工作方式二、接口图三、编写思路1.构造file_operations结构体2.实现read函数3.编写入口函数4.编写中断处理函数5.编写出口函数6.声明出入口函数以及协议四、源码五、课程链接一、工作方式SR501人体红外感应模块有两种工作模式:        通过......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
    在当今高度数字化的时代,网络安全已经成为了一个至关重要的领域。随着网络威胁的不断演变和增长,对于专业网络安全人才的需求也在急剧上升。对于那些对网络安全充满热情并且渴望自学成才的人来说,制定一个系统、全面且高效的学习路线和规划是迈向成功的关键第一步。本文将为您精心......
  • 【食用指南】Kiichi词典
    希一词典如果您对我发言中的某些词汇感到不解,请看这份词典。这里汇集了尽可能多的您可能会感到不解而我不会解释的发言。关于这里没提到的东西,建议您bdfs。如果遇到这里没写的可以在评论里。展开目录目录希一词典您句末句号瓦塔西早/早上好(在非早晨的时间段)重返/9/2k-1持续......
  • java调用python代码的两种方式:Runtime.exec()和Jython
    要在Java中调用Python代码,你可以使用几种不同的方法。这里我将介绍两种常见的方法:使用Runtime.exec()和使用第三方库如Jython。1.使用Runtime.exec()这种方法涉及到通过系统命令的方式执行Python脚本。下面是一个简单的示例,展示如何使用Runtime.exec()在Jav......
  • 5个神级在线网络安全工具网站(非常详细)零基础入门到精通,收藏这一篇就够了
    1Haveibeenpwned一个可以查信息安全的网站,打开之后输入你的邮箱或者是电话,就可以查询是否有泄露的情况,红色代表已经账号密码已经被泄露,绿色代表是安全的。你还可以测试你的密码是否安全,在密码界面输入你想设置的密码,就可以看到这个密码被使用的次数,如果使用过多的话,建议大......
  • SciPy从入门到放弃
    目录SciPy简介拟合与优化模块求最小值曲线拟合线性代数模块统计模块直方图和概率密度函数统计检验SciPy简介SciPy是一种以NumPy为基础,用于数学、工程及许多其他的科学任务的科学计算包,其使用的基本数据结构是由NumPy模块提供的多维数组,因此Numpy和SciPy协同使用可以更加高效地解......
  • 高阶数据结构(Java):AVL树插入机制的探索
    目录1、概念1.1什么是AVL树2.1平衡因子3、AVL树节点的定义4、AVL树的插入机制4.1初步插入节点4.2更新平衡因子4.3 提升右树高度4.3.1右单旋4.3.2左右双旋4.4 提升左树高度4.4.1左单旋 4.4.2右左双旋5、AVL树的验证6、AVL树的删除1、概念1.1什......
  • Java 大文件IO操作效率对比【我说说 你瞅瞅】
    Java文件IO操作效率对比注:本文只做时间消耗层面对比,内存占用层面需要特别关注!参数说明文件总大小:2,111,993,850字节(2.11 GB)staticStringdefaultFilePath="/tmp/data-24081412.json";缓冲区大小:8192字节staticintdefaultByteLength=1024*8;示例介绍通过......
  • Golang文件操作秘籍:ioutil包的终极指南
    Golang文件操作秘籍:ioutil包的终极指南在Go语言的世界中,文件操作是一项基本而常见的任务。Go标准库中的ioutil包提供了一些简便的方法来执行常见的I/O操作,包括文件的读写。本文将深入探讨如何使用ioutil包进行文件读写操作,并提供详细的代码示例,帮助你快速掌握这一技能。io......
  • JAVA字段审计功能-对比修改前后变化并使用枚举Enums进行翻译
    最近接到了一个业务是,审计客户和合同的字段变化,要明细到使用系统的人员能看懂(大概就是我们存入数据库是12什么的进行翻译)返回的信息大概就是:客户A的客户状态从客户状态A 修改成了 客户状态B,客户性别从客户性别A变成了客户性别B。我实现的思路大概就是:1、获取到......