首页 > 编程语言 >秦疆的Java课程笔记:64 面向对象 构造器详解

秦疆的Java课程笔记:64 面向对象 构造器详解

时间:2023-12-08 17:25:06浏览次数:44  
标签:Java name 构造 public Person3 64 秦疆 class String

  • 类中的构造器也称为构造方法,世在进行创建对象的时候必须要调用的。并且构造器有以下两个特点

    • 必须和类的名字相同
    • 必须没有返回类型,也不能写void
  • 构造器必须掌握!

  • 一个类即使什么也没写,也会存在一个方法

//写一个空的Person类=========================
public class Person1 {}
//然后在主程序调用它==========================
public class Application1 {  
    public static void main(String[] args) {  
        Person1 person1 = new Person1();
        System.out.println(person1)  
    }  
}
====运行结果====
OOP.demo.Person1@2f4d3709   //返回这样的内容,是不会报错的
  • 这时我们打开Person1的class文件就能看到:
public class Person1 {  
    public Person1() {  
    }  
}
//可以发现编译后自动为我们添加了一个方法
  • 我们也可以显式定义一个无参数构造器,如下
public class Person1 {  
    public Person1() {}  
}
  • 利用构造器实例化初始值
public class Person2 {  
    String name;  
    public Person2() {  
        this.name = "acolyte";  
    }  
}
//==========================================
public class Application2 {  
    public static void main(String[] args) {  
        Person2 person2 = new Person2();  
        System.out.println(person2.name);  
    }  
}
====输出结果====
acolyte
  • 使用new关键字,本质是在调用构造器。

  • 一旦定义了有参构造,无参构造就必须显式定义。

//创建一个有参构造===========================
public class Person3 {  
    String name;  
	public Person3(String name){  
	    this.name = name;
    }  
}
//继续使用刚才无参构造的主程序=================
public class Application3 {  
    public static void main(String[] args) {  
        Person3 person3 = new Person3();  
        System.out.println(person3.name);  
    }  
}
====运行报错====
无法将类 OOP.demo.Person3中的构造器 Person3应用到给定类型
  • 给上述代码增加一个显式构造。
public class Person3 {  
    String name;  
    public Person3() {} //只需要这么一行
	public Person3(String name){  
	    this.name = name;
    }  
}
//主程序不变======================================
public class Application3 {  
    public static void main(String[] args) {  
        Person3 person3 = new Person3();  
        System.out.println(person3.name);  
    }  
}
====运行结果====
null
//不再报错了,输出null只是因为没有赋值。
  • IDEA中,使用alt+Insert快捷键,可以自动生成构造器。可选“Select None”(无选择),生成无参构造。
  • 我试了一下,如果类中没有定义属性(就是String name;等声明语句),会自动生成无参构造。如果定义了各种属性,可以在生成构造器时选择各种属性生成构造器。
  • this.…的值一般是当前类中的,而this.…=后面的是参数传进来的值。

标签:Java,name,构造,public,Person3,64,秦疆,class,String
From: https://www.cnblogs.com/Acolyte/p/17888609.html

相关文章

  • java.util.concurrent.RejectedExecutionException异常分析
    感谢:https://blog.csdn.net/wzy_1988/article/details/38922449核心池和最大池的大小graphTBA("提交新任务")-->G{"maximumPoolSize设置为<br/>无界值<br/>(例如:Integer.MAX_VALUE)"}G---|"无界值"|H["允许线程池适应任意数量的并发任务"]G---|"......
  • java使用Ffmpeg合成音频和视频
    1、Maven依赖<!--需要注意,javacv主要是一组API为主,还需要加入对应的实现--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>1.5.6</version>&......
  • java-导出pdf
    前言:  纯代码画pdf格式<!--iTextPDF--><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.2</version></......
  • Java中<where>和<if>标签的组合使用
    在Java中,并没有<where>和<if>标签的组合使用。这两个标签不是Java编程语言或Java标准库的一部分,它们可能是你所使用的特定框架或库提供的自定义标签。如果你正在使用某个特定的Java框架或模板引擎(如MyBatis、Thymeleaf等),这些框架或引擎可能提供了自定义标签,使得在代码中使用类似于<......
  • JetBrains WebStorm 2023.3 (macOS, Linux, Windows) - 最智能的 JavaScript IDE
    JetBrainsWebStorm2023.3(macOS,Linux,Windows)-最智能的JavaScriptIDE请访问原文链接:https://sysin.org/blog/jb-webstorm-2023/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsWebStorm-最智能的JavaScriptIDEWebStorm是一个适用于JavaSc......
  • 使用Java实现面向对象编程 第八章 File IO 总结笔记
    java里操作文件1.第一步一定是获得这个文件(获得的文件,你是无法解析获得里面的内容,约等于获得冰。你只能知道大小颜色等。外表能够获取信息.)。2.第二步获得这个文件将这个文件转换成流。然后从这个io流里读取数据io流里又分为字符流(专门处理文字)字节流(专门处理2进制等文件)3.......
  • 如何实现Java file.mkdir()失败的具体操作步骤
    如何实现Javafile.mkdir()失败的具体操作步骤Java中的file.mkdir()失败问题解析在Java中,使用file.mkdir()方法可以创建一个新的文件夹。然而,有时候我们可能会遇到file.mkdir()失败的情况,这可能导致程序没有按照预期创建文件夹。本篇文章将详细解析file.mkdir()失败的原因,并提供......
  • Java Agent有什么作用?
     JavaAgent概述JavaAgent是一种特殊类型的软件组件,它允许在Java虚拟机(JVM)运行时修改应用程序的字节码。这种技术通常用于性能监控、日志记录、系统调试等。JavaAgent主要分为两类:1.启动时加载的Agent(Pre-MainAgent)这种类型的Agent在应用程序的主方法(main)执行之前加载......
  • java实例化的五种方式
    1.创建新对象五种方式1.用new语句创建对象,这是最常见的创建对象的方法。2.使用Class类的newInstance方法3.使用Constructor类的newInstance方法运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Objectobj=Class.forName("java......
  • Java synchronized
    synchronized是Java中最基本的线程同步机制之一,通过在方法或代码块上添加synchronized关键字,可以确保只有一个线程可以访问该方法或代码块。它是Java中实现线程安全的重要机制之一。synchronized关键字的使用方式有两种:1、修饰实例方法当synchronized关键字修饰一个实例方法时,......