实例化构造方法static统统都学会

news2025/1/13 17:08:18

文章目录

  • 前言
  • 一、实例化是什么?
  • 二、构造方法
    • 1.概念
    • 2.特性
    • 3.. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的
  • 四.static
    • 1.static修饰成员变量
    • 2.static修饰成员方法
    • 3.static成员变量初始化
  • 总结

前言

`在介绍这篇文章前,先大概介绍下类的格式

// 创建类
  class ClassName{
       field; // 字段(属性) 或者 成员变量
       method; // 行为 或者 成员方法
}

class为定义类的关键字,ClassName为类的名字,{}中为类的主体。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实例化是什么?

1.定义了一个类,就相当于在计算机中定义了一种新的类型,与int,double类似,只不过int和double是java语言自带的内置类型,而类是用户自定义了一个新的类型.
2.用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

static class Petdog{
        public String name;
        public String color;
    }
    public static void main(String[] args) {
        Petdog dog1 = new Petdog();
    }

这就是new一个实例化对象
注意事项:
1.new 关键字用于创建一个对象的实例.
2.使用 . 来访问对象中的属性和方法.

static class Petdog{
        public String name;
        public String color;
        public void barks(){
            System.out.println("狗叫");
        }
    }
    public static void main(String[] args) {
        Petdog dog1 = new Petdog();
        dog1.barks();
    }

输出:在这里插入图片描述

3.同一个类可以创建多个实例.

二、构造方法

1.概念

1.构造方法(也称为构造器)是一个特殊的成员方法.
2.名字和类名相同
3.创建对象,由编译器自动调用,并且在整个对象的生命周期内只调用一次

2.特性

  1. 名字必须与类名相同
    2. 没有返回值类型,设置为void也不行
  2. 创建对象时由编译器自动调用,并且在对象的生命周期内只调用一次(相当于人的出生,每个人只能出生一次)
    4. 构造方法可以重载(用户根据自己的需求提供不同参数的构造方法)
static class Date {
    public int year;
    public int month;
    public int day;
    public Date() {
        this.year = 1999;
        this.month = 5;
        this.day = 1;
    }//无参数的构造方法
    public Date(int year, int month, int day) {
        this.year = year;
        this.month = month;
        this.day = day;
    }//有参的构造方法
    public void printDate(){
        System.out.println(year + "-" + month + "-" + day);
    }
}
     public static void main(String[] args) {
         Date date = new Date();
         date.printDate();
     }

输出:
在这里插入图片描述

上述两个构造方法:名字相同,参数列表不同,因此构成了方法重载

3… 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的

static class Date {
    public int year;
    public int month;
    public int day;

    public void printDate() {
        System.out.println(year + "-" + month + "-" + day);
    }

    public static void main(String[] args) {
        Date d = new Date();
        d.printDate();
    }
}

上述Date类中,没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法。
***注意:***一旦用户定义,编译器则不再生成。

四.static

1.static修饰成员变量

static修饰的成员变量,称为静态成员变量,
静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的.
特性:

  1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中.
  2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问.
  3. 类变量存储在方法区当中.
  4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)

在这里插入图片描述
输出:
在这里插入图片描述

2.static修饰成员方法

.
java中,被static修饰的成员方法称为静态成员方法,是类的方法,
不是某个对象所特有的。静态成员一般是通过静态方法来访问的.
【静态方法特性】

  1. 不属于某个具体的对象,是类方法
  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者
  3. 不能在静态方法中访问任何非静态成员变量
  4. . 静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用

3.static成员变量初始化

注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化。

  1. 就地初始化
    就地初始化指的是:在定义时直接给出初始值,在这里插入图片描述
    比如上述这个就是就地初始化
    2.静态代码初始化
 静态代码块
static {
classRoom = "计算机";
System.out.println("I am static init()!");
}

注意事项
静态代码块不管生成多少个对象,其只会执行一次
静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
实例代码块只有在创建对象时才会执行

总结

好了今天的博客就到此结束了,希望大佬们给个三连,有什么错误或者欢迎指出,我一定会改正的!!😘😘😘

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/444093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AR实战-基于Krpano的多场景融合及热点自定义

背景 在之前的博客中,曾经介绍了关于Krpano的相关知识,原文:全景自动切片技术-krpano初识。简单讲解了基于krpano1.19-pr13下单张全景照片的处理与展示。随着实景中国在各地的落地生根,三维园区、三维景区、三维乡村等等需求的集中…

ERP系统给企业管理带来哪些改变?

企业资源计划(ERP)系统是一种综合性的管理工具,它可以集成和管理企业内部所有的业务流程和信息。自上世纪90年代以来,ERP系统已成为许多企业的重要工具,为企业管理带来了巨大的变革。 第一,ERP系统可以将企…

ArrayList与顺序表

目录 ​编辑 一、线性表 二、顺序表 1、接口的实现 (1)打印顺序表 (2)新增元素 (3)判定是否包含某个元素 (4)查找某个元素对应的位置下标 (5)获取 …

基于QTableView中的MVD代理添加总结

目录 1、Qt中MVD说明 1.1 View 1.2 Delegate 1.3 Model/View的基本原理 2、代码是现实示例 2.1 设置样式文件 2.2 set base attribute 2.3 设置model 2.4 设置表头 2.5 设置数据 2.6 添加代理控件 2.6.1 添加 QSpinBox 代理 2.6.2 添加 QComboBox 代理 2.6.…

【JS】vis.js使用之vis-timeline使用攻略,vis-timeline在vue3中实现时间轴、甘特图

vis.js使用之vis-timeline使用攻略,vis-timeline实现时间轴、甘特图 1、vis-timeline简介2、安装插件及依赖3、简单示例4、疑难问题集合1. 中文zh-cn本地化2. 关于自定义class样式无法被渲染3. 关于双向数据绑定 vis.js是一个基于浏览器的可视化库,它提供…

深度探索vector

vector是什么 ? vector就是一个可以自动扩充的array。 源码解析 vector主要是通过三个指针来维护的,分别是起点,当前终点,以及当前最大空间 sizeof(vector对象) 3 * 指针大小 vector每当遇到空间不同的情况,都会…

Windows逆向安全(一)之基础知识(十三)

Switch语句 先前讲了分支结构的if else形式,除此之外还有一种分支结构:switch 此次就来以反汇编的角度研究switch语句,并与if else进行比较 Switch语句的使用 有关Switch语句在vc6.0中生成的反汇编可分为4种情况,这4种情况的区…

不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程

1、Cursor 编辑器 可以直接官方网站下载:https://www.cursor.so/ (这里以Mac为例) 这是一款与OpenAI合作并且基于GPT4的新一代辅助编程神器,它支持多种文件类型,支持格式化文本、多种主题、多语言语法高亮、快捷键设…

react-7 组件库 Ant Design Mobile(移动端)

1.安装组件库 npm install --save antd-mobile 常用组件 tabbar 底部导航 Swiper 轮播图(走马灯) NavBar(顶部返回累) 配合 Dialog,Toast InfiniteScroll 无限滚动(实现下拉刷新) Skeleto…

ROS学习第九节——服务通信

1.基本介绍 服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色: ROS master(管理者)Server(服务端)Client(客户端) ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client &#…

远程控制电脑的软件哪个比较好用

有多种软件选项可用于远程控制计算机,最适合您的软件选项取决于您的具体需要和要求。 以下是一些最流行的远程控制软件选项及其功能和优势: TeamViewer TeamViewer 是使用最广泛的远程控制软件选项之一。 它具有用户友好的界面,并提供文件传…

Vue核心 Vue简介 初识

Vue核心 Vue简介 初识 1.1.Vue核心 Vue简介 初识 1.1.1.Vue核心 Vue简介 初识 英文官网 中文官网 1.1.2.介绍与描述 Vue 是一套用来动态构建用户界面的渐进式JavaScript框架 构建用户界面:把数据通过某种办法变成用户界面渐进式:Vue可以自底向上逐层…

YOLO V8实战入门篇 | Anaconda3 | ultralytics

目录 一、虚拟环境1.1 Anaconda3 安装1.2 创建适用YOLO V8的虚拟环境 二、YOLO v82.1 YOLO v8简介2.2 下载YOLO v8源码2.3 安装依赖 三、运行目标检测模型 一、虚拟环境 1.1 Anaconda3 安装 https://blog.csdn.net/weixin_42855758/article/details/122795125 参考这个链接&a…

NDK OpenCV 身份证信息离线识别

NDK系列之OpenCV 身份证信息离线识别技术实战,本节主要是通过OpenCV C库,实现身份证信息识别,如身份证号码识别,本节使用到的技术点同样适用于车牌号识别、银行卡号码识别等。 实现效果: 本节主要内容: 1…

数据库底层运行原理之——事务管理器

一般所有关系型数据库内部都有自己的事务机制,进程是如何保证每个查询在自己的事务内执行的,通过这篇文章来简单介绍一下。 我们可以理解为数据库是由多种相互交互的组件构成的,数据库一般可以用如下图形来理解: 事务管理器就是今…

两种方法,计算带地形起伏的地表面积

很多同学会经常计算占地面积, 就会用到投影面积计算和椭球体面积计算; 还有一些,需要去计算表面积, 也就是带地形起伏的地表面积, 这......咋办呢? 我们来介绍两种方法, 计算下面这个区域的地表面积—— 两种方法各有优势, 大家各取所需 方法一:表面体积工具 这…

【hello Linux】进程优先级

目录 1. 基本概念 2. 查看系统进程:(包括优先级) 2.1 使用命令查看系统进程 2.2 各字段分析 2.3 优先级的修正解释 2.4 使用 top 命令修改优先级 其他概念 Linux🌷 1. 基本概念 进程的优先权( priority)&…

Java版企业电子招投标系统源代码之电子招投标系统建设的重点和未来趋势

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及…

网工神器:PNETLab模拟器踩坑过程(一)

0、前言 由于工作需要,想测试一下SD-WAN,手边既没有测试环境又没有测试设备。突然想到为什么不用模拟器测试。经过我一番操作好像发现了新大陆,没想到模拟器的世界发生了翻天覆地的变化。真是“一日学习一日功,一日不学十日空”。…

【IoT】以一款实际产品为例,来谈谈如何做商业计划分析

本篇内容以笔者早期刚转型做产品时,实际负责的一款产品为例,来谈谈如何做产品的商业计划分析。 首先简单介绍一下这款产品: 这是一款电子便签产品,目的是为了替换纸质便签,增加一些智能化的提醒控制。 该产品通过蓝牙与手机端连接,应用端配置好提醒信息后一键同步至产…