zoukankan      html  css  js  c++  java
  • c#面向对象-类(类及其构成)

          学习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来访问实例对象。

  • 相关阅读:
    AlwaysOn 执行备份任务
    SQL Server 2016 + AlwaysOn 无域集群
    IIS负载均衡
    利用mapWithState实现按照首字母统计的有状态的wordCount
    DStream转为DF的两种方式(突破map时元组22的限制)
    java.lang.reflect.InvocationTargetException at shade.com.datastax.spark.connector.google.common.base.Throwables.propagate(Throwables.java160)
    java学习路线
    Java线程间通信
    多线程对象及变量的并发访问
    Java多线程基础
  • 原文地址:https://www.cnblogs.com/yongbufangqi1988/p/1729253.html
Copyright © 2011-2022 走看看