绝对干货,总结了下C#面向对象的干货内容以及我几年来的使用心得,分享出来

先明确几个简单概念作为开胃菜:

1、命名空间

namespace BackStageManagement.Services

关键字用于声明包含一组相关对象的作用域。 可以使用命名空间来组织代码元素并创建全局唯一类型。命名空间下可以有很多类!

定义命名空间: namespace 空间名称{ 类 }

引入命名空间: using 空间名称

2、构造函数

构造函数分类

  2.1.什么是构造方法?

首先它是一个方法,然后它具有“构造”的作用,所有称之为构造方法。

简单点说,构造方法可以对实例化出来的对象进行初始化。

方便实例化化之后的初始化操作。

  2.2 构造方法的语法要求

public 类名()

{

构造函数代码;

}

①构造方法要用 public 修饰,不能用 private 修饰;

②构造方法没有返回值, 且连 void 也不能写!!;

③构造方法的方法名字必须跟类名一样;

④构造方法是可以有重载的。

构造方法什么时候被调用?

当我们使用 new 关键字实例化一个对象的时候, 会首先执行构造方法。

 public Person(string name, int age, Gender gender, string address){this.name = name;this.age = age;this.gender = gender;this.address = address;}

  2.3 this 关键字

this 代表当前类的对象。

  2.4.注意事项

当我们的类中不写构造方法的时候,在代码编译后,系统会自动给它添加一个空

构造方法,如果我们写了一个构造方法,默认的“ 空构造方法”就不会存在。

这是因为我们手动谢了一个传参的构造方法,所以空的构造方法没有默认添加。

所以使用构造方法的话,如果希望可以默认初始化,需要自己加一个

public Person()

{

}

  2.5.C#静态构造函数

  静态构造函数是C#的一个新特性,其实好像很少用到。不过当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用。

class SimpleClass
{// Static constructorstatic SimpleClass(){//
    }
}

在使用静态构造函数的时候应该注意几点:

  1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。

  2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。

  3、一个类只能有一个静态构造函数。

  4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。

  5、最多只运行一次。

  6、静态构造函数不可以被继承。

  7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。

3、属性的get和set

get: 当通过属性名取值的时候, 会自动调用 get 中的代码;

set: 当通过属性名给字段赋值的时候, 会自动调用 set 中的代码;

value: 也是系统关键字, 代表赋给属性的值;

get 和 set 本质上就是两个函数。

        private int age;public int Age{get { return age; }     //get:取值.set {if(value > 100 || value < 0){age = 18;}else{age = value;}}    //set:赋值.}

4、静态方法与非静态方法

a、静态方法的调用

类.静态方法名([参数列表])

非静态方法的调用

类 对象 = new 类的构造函数([参数列表])

对象.非静态方法名([参数列表])

静态方法是属于类的,而非静态方法是属于对象的;

Class1 test = new Class1();
test.HelloFJT();//调用非静态类的非静态方法
Class1.HelloJT();//调用非静态类的静态方法 

b、内存的初始化

静态成员是在第一次使用时进行初始化。非静态的成员是在创建对象的时候。

静态构造函数只能被执行一次;非静态的构造函数可以根据需要进行多次使用。

c、内存中存储

静态的只有一块全局内存空间,非静态的可以有多块内存空间(副本)

d、释放

静态的一旦创建则在全局区一直存放,直到应用程序结束。非静态的则是由new关键字在堆中创建的。可以有多个副本。由GC进行释放。

4.2、都有哪些静态的东西

方法、字段、属性、事件、构造函数、类

不能使用静态关键字的

常量、索引器、析构函数

4.3、静态构造函数

非静态类中可以包含静态成员。但是,静态类中不能包含任何非静态成员。静态构造函数不能带有任何参数,而非静态构造函数可以有多种参数列表

4.4、使用场合

a、需要保存全局都有效的数据, 如:当前已登录用户信息、系统配置信息、系统设置

b、因为效率相对更高,所以需要快速访问的

c、使用频率非常高的

注意:不要过多的滥用Static

面向对象开发有三大特性(特点 / 特征) : 封装, 继承, 多态。我们会在下个篇章里真正的去讨论这几个特征。

转载于:https://www.cnblogs.com/qixinbo/p/8214049.html

C#面向对象(一):明确几个简单的概念作为开胃菜相关推荐

  1. Objective-C向面向对象编程中添加了一个新概念:类别(categor)。

    类别 Objective-C向面向对象编程中添加了一个新概念:类别(categor).类别被设计用于解决这样的问题:基类被认为是很脆弱的,即便是看似无害的改动也不能引入,否则可能会破坏更复杂的派生类. ...

  2. python中面向对象的缺点_最简单的方法搞懂Python面向对象

    1.面向对象介绍 2.类和对象 3.面向对象基本语法 面向对象与面向过程面向过程:根据业务逻辑从上到下写代码. 面向对象:将变量与函数绑定到一起,分类进行封装,每个程序只要负责分配给自己的分类,这样能 ...

  3. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现

    前面的话 本文用面向对象的技术来实现一个简单的图形面积计算器 图形类 //rect.class.php <?phpabstract class Shape{public $name;abstra ...

  4. Python中的面向对象编程(类编程)由简单到复杂的示例代码

    关于本文代码中的self的含义,大家可参考下面这篇博文: https://blog.csdn.net/wenhao_ir/article/details/125384347 另:说明一下,本博文中&q ...

  5. 关于面向对象和面向过程的简单理解

    关于面向对象和面向过程的理解 1.什么是面向过程? 大概意思:就是做一件事情,走大到小,从里到外,每个步骤的细节(自上向下,逐步细化).

  6. 面向对象之内置方法(简单)、组合。以及接口归一化设计与抽象类

    一.内置方法 一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo( ...

  7. 面向对象编程(Object Oriented Programming)概念总结及延伸(一)

    1.介绍 笔者的梦想是成为一个架构师,但是要成为一个合格的架构师是相当不易的,它既需要丰富的项目经验也需要不断地吸取新的知识,而且在这过程中我们也要不断巩固基础知识.我也注意到了,现在主流的文章大都集 ...

  8. python面向对象编程开胃菜

    文章目录 面向对象与面向过程 面向对象对象与类 面向对象的self变量 面向对象的init方法 面向对象的str方法 面向对象正菜: 面向对象之封装 面向对象之继承 面向对象之多态 面向对象与面向过程 ...

  9. 菜鸟学java ——(一)面向对象程序设计(几个重要的概念)

    几个概念的解释: (1)面向对象(OOP:程序由对象组成,每个对象中包括功能部分和实现部分.面向对象关心能否满足用户需求,而非对象的具体实现.在OOP思想中数据被放在第一位,而操作数据的算法被放在第二 ...

最新文章

  1. Maven(插件配置和生命周期的绑定)
  2. python积分管理系统_python实现每天自动签到领积分的示例代码
  3. jQuery超炫酷按钮插件及源码
  4. 10 个平板电脑上的 Python 编辑器
  5. 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
  6. jQuery初识和常用事件(一)
  7. CF1444C-Team-Building【可撤销并查集】
  8. 如何量化考核技术人的KPI?
  9. educoder 初始mongodb
  10. myeclipse中删除tomcat 的server后,重新添加进来的方法
  11. 免杀Payload生成工具Veil的下载与使用
  12. 好货推荐!两款免费的 Linux 桌面录制工具
  13. JavaScript中this的指向总结
  14. 标志设计|标识设计|商标设计|logo设计|的起源
  15. XtraReport中改变文字方向
  16. 简单实现 Android 闹钟
  17. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)
  18. vb.net listview 删除选定行_VBA学习笔记59-1: listview控件
  19. 美容门店信息化管理系统该如何搭建?不妨参考一下百数
  20. 程序员应对35岁中年危机的措施

热门文章

  1. u3d 动态 随机 地图_我的世界1.12.2模组教程:VoxelMap小地图新老玩家辅助神器
  2. vim进阶之202007命令记录
  3. 梯度下降中的学习率的作用
  4. 需要正则化的一个判断
  5. keil5改工程名称_修改Keil工程名称并添加其他模块文件
  6. gradle 指定java版本_Eclipse使用gradle编译时,使用固定的jdk版本进行编译(修改gradle的jdk编译版本)...
  7. c++ 判断数学表达式有效性_高考数学大题如何quot;保分quot;?学霸教你六大绝招!...
  8. qt 中如何检测是否按下键盘(很实用)
  9. mysql 列选项_列未显示在“列”选项卡中(MySQL Workbench)
  10. mysql二维数组vb_VBA链接MYSQL的帮助类