学习c#已经快一个学期,在这一段时间里,通过自己的努力和老师指导,自己感觉收获颇丰,所以我想把自己学到东西整理一下,供大家点评!若有错误或不当之处,敬请指出。

今天,我先从类及其构成说起!

1、    类的基本格式为:

class  类名

{

//类成员;

}

2、类函数成员:

《1》构造函数:构造函数名必须与类同名。若定义的类中不存在构造函数,则c#编译器会自动生成一个默认的构造函数(该构造函数,无返回值和参数,并不做任何操作)。对于构造函数,我们需要注意一点的是:我们都知道任何类都默认继承object类,当我们写一个构造函数的时候,编译器会做些小动作。例如我们定义了一个构造函数为public  void  Hel()时,其实在编译的时候会被编译成public  void  Hel():base()。这就意味着,如果你写的类所继承的类中必须有无参数的构造函数,例如下面的一段代码就是错误:

class   AA

{

public  AA(int i ){//代码;}

}

class BB:AA

{

public BB(){ //代码 }

}

由于BB继承于AA,在编译的时候类BB构造函数BB():base(),而AA中没有不带参数的构造函数,故会编译出错!要想改,应改为:public BB():base(1)。

《2》析构函数:我们都知道c#编译器中有垃圾回收器gc,会自动回收垃圾,释放内存。一般我们不用编写析构函数。

《3》方法成员:方法成员分为:实例方法成员和静态方法成员。实例化方法必修通过实例化一个类来调用,而静态方法成员必须通过类名来调用。注意:实例方法即使不含有参数,也隐含一个参数this。下面通过画图来说明静态方法和实例方法在内存中存储位置,以及怎样调用实例方法和静态方法。例如存在这样一个类:

class  mate

{

static   public  void  play(){//代码;}

public   void   work(){//代码;}

}

static main()

{

mate  my=new my();

my.work();

mate.play();

}

对于my.work(),其实应为my.work(this);在调用该方法的时候,c#编译器先通过my的类型找到相应类对象,然后找到相应的方法,即work方法,同时this压栈,指向实例对象,通过this来访问实例对象。

c#面向对象-类(类及其构成)的更多相关文章

  1. OC学习总结之面向对象和类

    OC学习总结之面向对象和类   Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象 ...

  2. Java面向对象 Object类 内部类

     Java面向对象 Object类    内部类 知识概要:                 一:Object类                 二:内部类 匿名内部类的写法 1.Object O ...

  3. 【转】Python之面向对象与类

    [转]Python之面向对象与类 本节内容 面向对象的概念 类的封装 类的继承 类的多态 静态方法.类方法 和 属性方法 类的特殊成员方法 继承层级关系中子类的实例对象对属性的查找顺序问题 一.面向对 ...

  4. Java面向对象-Java类的继承及super关键字

    Java面向对象-Java类的继承 1,继承定义以及基本使用 定义:子类能够继承父类的属性和方法: 注意点:Java中只支持单继承: 私有方法不能继承: 上代码: package com.java12 ...

  5. python进阶01 面向对象、类、实例、属性封装、实例方法

    python进阶01 面向对象.类.实例.属性封装.实例方法 一.面向对象 1.什么是对象 #一切皆对象,可以简单地将“对象”理解为“某个东西” #“对象”之所以称之为对象,是因为它具有属于它自己的“ ...

  6. Python基础-面向对象初识--类

    什么是类 具有相似功能和属性的一类实物 什么是对象 类的具体体现,具体到一个 面向对象的优势 1.类是一组相似功能的集合,使组织结构更加清晰和规范化 2.研究面向对象要有上帝的思维,用面向对象设计程序 ...

  7. python 面向对象与类的基本知识

    一  什么是面向对象,面向对象与类的关系. 面向对象的程序设计是用来解决扩展性. 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象 ...

  8. python基础-面向对象(类)

    类 类的定义 >>> class P: ...     pass ... >>> P <class __main__.P at 0x0000000001F4B ...

  9. Python之面向对象新式类和经典类

    Python之面向对象新式类和经典类 新式类和经典类的继承原理: 在Python3中,就只有新式类一种了. 先看Python3中新式类: 类是有继承顺序的: Python的类是可以继承多个类的,也就是 ...

  10. Python之面向对象元类

    Python之面向对象元类 call方法: class People: def __init__(self,name): self.name=name # def __call__(self, *ar ...

随机推荐

  1. struts2.1.6教程一、准备工作及实例

    1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. Src 目录:源文%件存放地 2.六个基本包 ...

  2. 深入理解C#中的String

    关于C#中的类型 在C#中类型分为值类型和引用类型,引用类型和值类型都继承自System.Object类,几乎所有的引用类型都直接从System.Object继承,而值类型具体一点则继承System. ...

  3. 为什么各大厂商要抢先跟进H.265?

    继爱奇艺.乐视等视频厂商宣布支持 H.265 高清视频后,2014 年 4 月,搜狐视频宣布正式上线视频行业首个 H.265 高清大片专区,可在线观看 200 余部当下最火的超高清大片.国外 BBC ...

  4. FTP服务器搭建及操作(一)

    FTP服务器搭建及操作(一) FTP搭建 PHP FTP操作 搭建方法参照(windows):http://www.cnblogs.com/lidan/archive/2012/06/04/25351 ...

  5. Android6.0-运行时权限处理

    为什么需要有运行时权限? 大家都知道在Android6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,如果点击取消(即不认可应用所申请的权限),则会取消应用的安装.而用户出于安装应用 ...

  6. R中用黏贴板读取excel数据以及用R生成人名

    本人尚在超级菜鸟级别,中间有些代码写的很low,请不要见笑! 1.今天先跟大家分享一个小技巧,用黏贴板将excel中的数据读进R 首先选中要读入R的数据 如图,上面是我分析的病人相关资料,Ctrol+ ...

  7. js编写简单的贪吃蛇游戏

    css代码 *{ margin:; padding:; } td{ width: 4px; height: 4px; background: #ccc; border: 2px solid #ccc; ...

  8. android网络监测

    public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManag ...

  9. Android计时器实现

    Wyy.java package com.test; import android.app.Activity;import android.app.Service;import android.os. ...

  10. cpp(第八章)

    1. #include <iostream> inline int add(int &n) { n= n+; ; } int main() { using namespace st ...