C#(Csharp)我的基础教程(一)(我的菜鸟教程笔记)-构造方法学习与探究

目录

    • 核心:构造方法(析构方法)、实例方法/静态方法
    • 1、构造方法(Constructor):
    • 2、构造方法的重载
    • 3、构造方法之间的调用
    • 4、静态方法

核心:构造方法(析构方法)、实例方法/静态方法

1、构造方法(Constructor):

构造对象其实就是创建对象。也就是我们在创建对象过程中,需要调用的方法,叫做构造方法。

研究构造方法:主要是研究对象是如何初始化的。

构造方法默认:当我们编写一个类的时候,如果你没有显式地写出任何构造方法,这时候编译器编译的时候,会个这个类默认添加一个无参数的构造方法。当然你如果添加了任意形式的构造方法,默认的都不会在产生。

构造方法规范:

public 类名称([参数1][参数2]...{}

注意:构造方法不能有任何返回值。名称必须和类名完全一样。

调试默认构造方法的调用过程发现:

第一、首先初始化字段。
第二、初始化有默认值的属性。
第三、执行构造方法。

为什么是这样的顺序?

首先搞清楚,构造方法是用来初始化的!初始化什么?可初始化的内容有字段、属性、或其他的相关新的的读取和写入。既然在构造方法中,可能调用字段或者属性等,因此必须先对字段和属性做初始化。

2、构造方法的重载

也就是我们可以在一个类中,添加若干构造方法,这些构造方法的名称都是一样的,但是方法的参数类型或个数是不一样的。

注意:this关键字非常总要,this后面可以使用的都是类的成员(字段、属性、方法),尤其是成员变量和局部变量同名的时候。this区分是非常必要的。

3、构造方法之间的调用

使用:this关键字调用其他的构造方法。注意,执行的顺序是先调用内层的构造方法。

方法重载调用是根据参数的类型和个数完全对应来查找的。

三、实例方法

实例方法就是通过对象去调用的方法,是我们程序编写的核心内容。

调用形式:对象名.实例方法名(参数…)

定义规范:

访问修饰符  返回值类型  方法名称(方法参数....{//方法体....}

访问修饰符:public、private…

返回值类型:没有返回值用void 其他的返回值类型是我们可以用的所有类型(基础数据类型、对象类型)

方法名定义:使用Pascal命名法,尽量用动宾短语,或动词

【1】没有返回值、没有参数的的方法
使用场景:通常是完成一个固定的任务,这个任务不需要参数,也不需要返回给调用者数据。
比如做数据的备份、数据的优化、定时的数据报表、相关信息的定时存储等…

【2】没有返回值,有参数的方法
使用场景:需要完成一个任务,提供一些参数,但是不需要返回给调用者。

【3】有返回值,有参数
使用场景:需要完成一个任务,提供一些参数,同时需要把结果给调用。

命名参数(也就是说调用方法的时候,给参数前面写上参数名称,这样可以不用考虑顺序)
使用场景:在参数比较多的时候,还是有用的。

4、静态方法

静态方法:就是使用static修饰的方法,不能通过对象去调用,而是直接通过类名.方法名的形式去调用。

   public static string GetStaticInfo(string equipName){string result = $"设备ID:{EquipID} 设备名称:" +$"{equipName} 压力:{Pressure} 采集时间:{CollectionTime}";return result;}

这个会出错。愿意:静态方法内部不能“直接调用实例成员(字段、属性、方法)”

静态方法的特征:

所谓静态,就是不需要new对象,直接通过类完成。这些静态的成员(字段、属性、方法)在你的程序启动的时候由CLR负责的,也就是说随着程序的启动自动初始化完成。

意味着这些静态的成员,在程序启动后,同时就存在了。

但是实例成员必须是在new之后才存在的,所以,静态的是不能直接调用实例的,原因就是实例的成员并不存在。解决方法就是调用之前,必须得到成员的实例对象。

五、总结实例方法和静态方法

实例方法或其他的成员,换句话说,我们创建的对象,在你使用完毕后,会被GC(垃圾回收机制)回收,从而释放内存,因为我们的程序,在不断的创建对象,销毁对象。

静态的成员,是不会受GC控制的,也就是说你的程序不关闭,这些成员占用的内存空间,永远都不会释放。

所以,静态的成员,必须慎重使用。使用非常频繁的,占用空间又不大的。可以适当使用。

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

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

相关文章

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后,使用 & 将子 shell 放入后台执行&#xff0c…

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 ,2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…

蓝桥杯每日一题2023.10.7

跑步锻炼 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举&#xff0c;对于2的情况特判即可 #include<bits/stdc.h> using namespace std; int num, ans, flag; int m[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_ren(int n) {if((n %…

C++20中的关键字

文章目录 前言关键字列表关键字含义总结 前言 源于上一篇中提到了 decltype是一个关键字&#xff0c;所以去查了现有的关键字列表&#xff0c;其实我对C/C的关键字还停留在上世纪大概30多个的时代&#xff0c;虽然知道C加了 auto、constexpr 等关键字&#xff0c;但查询过后才…

计算机网络(三):数据链路层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 数据链路层概述 1.1 数据链路层在网络体系结构中所处的地位 链路 (Link) 就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点 数据链路 (Data Link)…

LFU 缓存 -- LinkedHashSet

相关题目&#xff1a; 460. LFU 缓存 相关文章 LRU 缓存 – 哈希链表 # 460. LFU 缓存 # Python中和 LinkedHashSet 相似的数据结构 OrderedDict from collections import OrderedDict class LFUCache:# key 到 val 的映射&#xff0c;我们后文称为 KV 表keyToVal {}# key 到…

3.primitive主数据类型和引用 认识变量

3.1 声明变量 Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么样的悲剧&#xff1f;并且它也不会让你将浮点数类型变量放进整数类型的变量中&#xff0c;除非你先跟编译器确认过数字…

Matrix卡顿优化之IdleHandlerLagTracer源码分析

前言 IdleHandler是Android系统为开发者提供的一种在消息队列空闲时运行任务的机制&#xff0c;通过IdleHandler执行的任务优先级低于主线程优先级&#xff0c;会在主线程任务执行完成后再执行&#xff0c;所以适用于一些实时性要求不高的任务&#xff0c;通常用于Android启动…

【状态估计】将Transformer和LSTM与EM算法结合到卡尔曼滤波器中,用于状态估计(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

25 Python的collections模块

概述 在上一节&#xff0c;我们介绍了Python的sqlite3模块&#xff0c;包括&#xff1a;sqlite3模块中一些常用的函数和类。在这一节&#xff0c;我们将介绍Python的collections模块。collections模块是Python中的内置模块&#xff0c;它实现了特殊的容器数据类型&#xff0c;提…

>> 操作符的作用和用法

文章目录 JS 中>>操作符介绍>>操作符的作用>>操作符具体用法总结 JS 中>>操作符介绍 前几天面试美团的时候被一道链表的算法题卡住了&#xff0c;面试完之后我去查了这道算法&#xff0c;然后发现在解题过程中使用了>>这个操作符&#xff1a; l…

JavaWeb:上传文件

1.建普通maven项目&#xff0c;或者maven项目&#xff0c;这里以普通maven为例&#xff0c;区别的jar包的导入方式啦 到中央仓库下载哦 2.结构 3.写fileservlet public class FileServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpSe…

LVS+Keepalived 高可用集群负载均衡

一.keepalived介绍 1.1.Keepalived实现原理 由多台路由器组成一个热备组&#xff0c;通过共用的虚拟IP地址对外提供服务。 每个热备组内同时只有一台主路由器提供服务&#xff0c;其他路由器处于冗余状态。 若当前在线的路由器失效&#xff0c;则其他路由器会根据设置…

三相PWM整流器滞环电流控制Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes&#xff0c;所谓仿函数【不懂&#xff0c;跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

MySQL、Oracle、SQL Server / MS Access 中的 NULL函数用法

一、MySQL&#xff1a; isnull(exper) 判断exper是否为空&#xff0c;是则返回1&#xff0c;否则返回0 ifnull(exper1,exper2)判断exper1是否为空&#xff0c;是则用exper2代替 nullif(exper1,exper2)如果expr1 expr2 成立&#xff0c;那么返回值为NULL&#xff0c;否则返回值…

Java之TCP,UDP综合小练习一

4. 综合练习 练习一&#xff1a;多发多收 需求&#xff1a; 客户端&#xff1a;多次发送数据 服务器&#xff1a;接收多次接收数据&#xff0c;并打印 代码示例&#xff1a; public class Client {public static void main(String[] args) throws IOException {//客户端&…

【机器学习】决策树原理及scikit-learn使用

文章目录 决策树详解ID3 算法C4.5算法CART 算法 scikit-learn使用分类树剪枝参数重要属性和接口 回归树重要参数&#xff0c;属性及接口交叉验证代码示例 一维回归的图像绘制 决策树详解 决策树&#xff08;Decision Tree&#xff09;是一种非参数的有监督学习方法&#xff0c;…

Unity编辑器拓展-Odin

1.相比于原生Unity的优势 Unity不支持泛型类型序列化&#xff0c;例如字典原生Unity不支持序列化&#xff0c;而Odin可以继承序列化的Mono实现功能强大且使用简单&#xff0c;原生Unity想实现一些常见的功能需要额外自己编写Unity扩展的编码&#xff0c;实现功能只需要加一个特…