1.new关键字做的4个事情
1.1 开辟堆空间
a.开辟多大的空间呢?
当前类 所有的 成员变量类型所占空间的总和 + 类型指针(方法表的地址)
b.开辟了空间干什么用呢?
存放 成员变量

1.2 创建对象
a.将对应类型 中的 实例成员模板区 里的 实例变量 复制到 堆空间空间中;
b.将 对应类型 的 方法表地址 设置 对象!
1.3 调用构造函数

a.将 前面创建 的对象 的堆地址,先传给 构造函数里的 this!
b.再 执行 构造函数里的代码!

1.4 返回堆地址

2.静态成员 和 实例成员的区别
2.1静态成员
加载:是当程序 第一次遇到 某个类的时候,进行 类型加载;加载中就会 创建该类的类型 和方法表,在类型中就会将 静态成员 保存到 静态成员区中;
访问:通过 类名.静态成员:Dog.dogNum++;

2.2实例成员
加载:是通过 new关键字 创建对象的时候加载的!
访问:通过 对象名.实例成员: Dog d =new Dog(); d.name="小白";

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace P01MethodOverload
{class Program{static void Main(string[] args){//1.方法重载:方法名相同 + 参数不同(个数 或 类型) ,和 返回值无关!//1.1 同一个类中 不允许出现 方法名 和 参数(参数的类型和个数,与参数名无关) 完全一样的 两个方法//1.2 但是 允许 出现 方法名相同,但是 参数 的 【个数 或 类型】 不同 的多个方法 同时存在!-- 这个机制就叫做【方法重载】!Console.WriteLine("哈哈哈哈");Console.WriteLine(123123);Console.WriteLine(true);}static int SayHi(string strName){return 1;}static int SayHi(string strName,int age){return 1;}static int SayHi(int strPwd){return 1;}/// <summary>/// 1.1 求和 2个数/// </summary>/// <param name="x"></param>/// <param name="y"></param>/// <returns></returns>static int Add(int x, int y){return x + y;}/// <summary>/// 1.2 求和 3个数/// </summary>/// <param name="x"></param>/// <param name="y"></param>/// <param name="z"></param>/// <returns></returns>static int Add(int x, int y, int z){return x + y + z;}}
}

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace P02OOP
{class Program{static string aaa="123";static void Main(string[] args){/*1.类* 1.1 语法: class 类名 { }* 1.2 作用 a.【分类】-为程序里的 各种 变量 方法 做分类!*             怎么分类呢? - "名词提炼法";*             类里放什么呢? - 放 数据(全局变量) 和 方法;* 1.3 作用 b.【复用】-复用代码结构 和 方法*///1.2.1 类之间的调用//a.如果 被 访问类 的 成员 或 方法 被 static 修饰的话,则直接通过 类名.成员 的方式来访问//1.3关于类的加载: 当程序执行某个方法时,会优先将 方法里的 第一次遇到的所有的 类 都加载到内存中;然后再 由上至下  的 执行 方法里的代码!Console.WriteLine("begin");Test();Console.ReadLine();}static void Test(){Dog.type = "苏格兰牧羊犬";Dog.sex = false;Dog.age = 1;Dog.Bark();Cat.name = "";}}/// <summary>/// 犬 类/// </summary>class Dog{/* 类的成员 都有 访问修饰符:* a.私有成员,private:凡是私有成员,只能 在当前类中被访问! -- 类的所有成员 默认都是 private* b.公有成员,public :可以在类中 或 类的外部 访问!*///private static string type;public static string type=Console.ReadLine();public static int age;public static bool sex;public static void Bark(){Console.WriteLine("汪汪~~~~~" + Dog.type);}static void Pee(){Console.WriteLine("对着电线杆尿尿~~~~~~~~~");}}class Cat{public static string name = Console.ReadLine();}
}

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace P03Object
{class Program{/// <summary>/// 类 和 对象/// </summary>/// <param name="args"></param>static void Main(string[] args){/*  Dog d1 = new Dog()*  等号左侧 叫生成 Dog类的【变量】! 在 栈 中开辟空间,存放 =号右边创建的堆空间地址*  等号右边 叫做创建(实例化) Dog类的 【对象】!在 堆 中开辟空间,在堆中存放 实例成员*/Dog d1 = new Dog("小白", 1, false);//d1.name = "小白";//d1.age = 2;//d1.sex = false;d1.Bark();Dog.dogNum++;Dog d2 = new Dog("小黑", 2, true);//d2.name = "小黑";//d2.age = 3;//d2.sex = true;d2.Bark();Dog.dogNum++;Console.ReadLine();}}class Dog{/* 在类中,没有被static修饰 叫做 【实例成员】*        实例成员的访问方式,是通过 【对象】.【实例成员】*/public string name;public int age;public bool sex;public static int dogNum = 0;/* 构造函数:无返回值类型,并且 方法名 必须 和 类名一致!*          只能被new关键字调用*/public Dog(string name1,int age1,bool sex1){this.name = name1;this.age = age1;this.sex = sex1;}public void Bark(){Console.WriteLine("汪汪~~~我是一只小狗狗,叫做{0},年龄{1},性别{2}", name, age, sex);}}
}

  

转载于:https://www.cnblogs.com/fenglingyi/p/4230874.html

C#基础篇七类和静态成员相关推荐

  1. Java基础篇:类的通用格式

    也许理解类的最重要的事情就是它定义了一种新的数据类型.一旦定义后,就可以用这种新类型来创建该类型的对象. 这样,类就是对象的模板(template),而对象就是类的一个instance.既然一个对象就 ...

  2. Java基础篇--工具类操作之计算并输出21世纪的闰年,计算程序的执行时间

    计算并输出21世纪的闰年,计算程序的执行时间. 实现方法不唯一,此方法仅作初学者(自己)参考..... 所用类API介绍 所用方法API介绍 GregorianCalendar类中直接给出了判断是否为 ...

  3. Activiti7工作流引擎:基础篇(七) 流程变量

    不要指望别人能帮你多少,人生事事物物都得靠自己. 一:简介 流程变量就是if(条件)中使用到的变量用于参与条件表达式的计算. 变量都是有作用域的,在程序中方法内部的变量是属于局部变量,方法外的变量属于 ...

  4. JS 基础篇(七) 函数柯理化

    函数柯理化 定义 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成 接受一个单一参数(最初函数的第一个参数)的函数, 并且返回接受余下的参数且返回结果的新函数的技术 个人理解: ...

  5. 【C++ 基础篇:21】:friend 友元四连问:什么是友元?友元类?友元函数?什么时候用友元?

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  6. C++ 学习 ::【基础篇:13】:C++ 类的基本成员函数:类类型成员的初始化与构造函数问题

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  7. C++ 学习 ::【基础篇:17】:C++ 类与对象:运算符重载介绍、运算符重载函数(类内与类外区别)写法及简单设计实现

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  8. 你所需要的java基础篇和提升篇大总结

    好好学java 致力于java知识分享 关注 精彩内容 你所需要的java全套视频教程 你所需要的java电子图书 你所需要的大数据视频教程 你所需要的java练习项目 如 / 诗 近半个月,每天一篇 ...

  9. WF4.0 基础篇 (三十 完) 对学习WF的一点建议

    从09年10月份 NET4.0 Bata 2发布后,我就开始写[WF4.0 基础篇]这个系列,经历了5个多月终于在NET4.0正式发布前将这个系列完成了 这段时间与一些对WF4.0感兴趣的公司与开发人 ...

最新文章

  1. java链表list_java集合之linkedList链表基础
  2. [Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ...
  3. Mac OS包管理器Homebrew
  4. 华为路由器的NAT配置
  5. 编写c语言程序 斐波那契,请编写一个函数,生成并显示前n个斐波那契数.在主程序中测试...
  6. 如何使用下一代编码技术提升流媒体体验
  7. px4 uavcan linux,PX4开发指南-12.2.2.UAVCAN固件升级
  8. git分支添加访问权限
  9. 某大型银行深化系统技术方案之十五:服务层之服务调用
  10. Recursive sequence HDU - 5950 (递推 矩阵快速幂优化)
  11. 通过SecureCRT工具从远程Linux服务器下载文件到本地Windows
  12. .NET URL 301转向方法的实现
  13. win10安装VS2015
  14. C#中的动态类型(Dynamic)
  15. oracle数据库在公有云上,【云端起舞】在Oracle公有云上创建克隆数据库
  16. Google Guava 实战之List篇
  17. JAVA动态桌面制作_自己动手制作安卓动态壁纸教
  18. 基于BQ76PL455的BMS电路板设计
  19. 三天打鱼两天晒网问题Java解法
  20. 【Flash新手入门教程】实例讲解引导层的应用

热门文章

  1. 程序员创业5年,做了1000多个项目
  2. Bmp位图图片颜色替换
  3. 软件管理员密码的作用 如何设置软件管理员密码?
  4. rust地基蓝图在哪找_深海迷航蓝图在哪 深海迷航全蓝图及碎片详细坐标位置介绍...
  5. Acrobat/Adobe Reader字符显示有毛刺的解决方法
  6. 404错误页面的一些具体操作设置
  7. Python练习题五
  8. 如何在线将ofd转成Word格式文档
  9. 2.9 解题实战:小白上楼梯(递归设计)
  10. 可切割的ADC连接物DBCO-NHS,DBCO-NHS ester,1353016-71-3,DBCO-NHS酯是一种胺反应性构件,用于有机介质中含胺分子的改性。