zoukankan      html  css  js  c++  java
  • C#面向对象(抽象类、接口、构造函数、重载、静态方法和静态成员)

    1、抽象类

        抽象类关键词   abstract   (抽象)  override    (重写)

    在父集中用   abstract 表示抽象类,抽象方法,在子集中用  override 改写

      抽象类就是出来当亲爹的,只为继承而出现不能被实例化成对象,一般抽象类中只放置抽象方法,只规定了返回类型和参数,不定义具体的内容

    抽象类可以包含抽象方法普通方法,抽象方法一定在抽象类中,抽象类中不一定只有抽象方法 , 如果要调用抽象类中的普通方法,那么需要子类继承之后实

    化再调用,当一个类继承于抽象类,那么这个派生类必须实现所有的的基类抽象方法。

      sealedabstract 关键字不能同时出现

    namespace ConsoleApplication1
    {
        public abstract class Ren
        {
            public abstract string ChiFan();      
        }
    }
    //=========================================  
    namespace ConsoleApplication1
    {
         public  class Woman : Ren
        {
            public override string ChiFan()  //子类,父类 方法名称要一样,父类中抽象方法子类中必须要重写
            {
                return "细嚼慢咽";      
            }
        }
    } 
    //====================================== 
    namespace ConsoleApplication1
    {
        public class Man : Ren
        {
            public override string ChiFan()
            {
                return "大口吃饭";
            }      
        }
    }

    2、接口

    关键词  interface 

    可以将程序拆分成多个模块,定义子类必须实现的功能

    它就是出来当干爹的,不能被实例化成对象,接口里面不能有实际的方法

    类:一定用 public 修饰符, 用 interface 代替类个关键字 class 

    方法:不能包含普通方法,不用 public, 直接【 数据类型 函数名 ();  

    子类:不需要override关键字,

          :父集中的方法都有重写

     案例

    namespace ConsoleApplication1
    {
        public interface YuLe
        {
            string AiHao();
        }
    }
    ————————————————
    
    namespace ConsoleApplication1
    {
        public interface GongZuo
        {
            string JiNeng();
        }
    }
    ————————————————
    
    namespace ConsoleApplication1
    {
        public class Man : Ren, GongZuo, YuLe
        {
            public override string ChiFan()
            {
                return "大口吃饭";
            }
    
            public string JiNeng()
            {
                return "敲代码";
            }
    
            public string AiHao()
            {
                return "打游戏";
            }
    
        }
    }
    View Code

    —— 子类、父类 方法名一致

     —— 父类中的方法子类中都要重写

    3、构造函数

    构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象(为对象成员变量赋初始值),

    每一个类都有构造函数,类实例化的过程就是执行构造函数的过程,一个类可以有多个构造函数 ,

    构造函数一定不能是静态的

    public class Test1
    {                              
        public Test1()   // 什么都没有的一般默认隐藏,  public  方法名 (没有数据类型)
      {                 // 方法名与类名一致,text1()  括号中可以有参数
    
        }                  
    }                              
    
    text1 t = new text1( );  //new  text1( );  实例化过程          

    4、重载

    关键词 overload

    构造函数的方法名一样,参数个数不同,或参数类型不同

    public  class  text2
    {
            public   text2 ( string  a , string  b )
            {
                 return   a + b ;
            }
            public   text2 ( int  a , int  b )
            {
                 return   a + b ;
            }
    }

    5、静态方法和静态成员

    关键词 static

       静态方法是属于类的,不属于类下面的对象。

       直接用: 类名 . 静态方法

    public  class  text3 
    {
         public  static  string  haha ( )
         {
              return   "哈哈哈";
         }
    }
     
    text3.haha ( );      //调用,直接通过类名点出 

    非静态方法

             需要实例化对象

       成员都是属于对象的,用对象调用

    静态方法 

             不需要实例化对象

             静态成员是属于类的,用类名调用

         

    注: 静态方法里面不能包含普通成员

           普通方法里面可以包含静态成员

    用处

          为了简便,连接数据库的时候,造连接对象类,使用静态属性直接返回连接对象。

        两个类之间传递信息

         不允许创建对象的类(对创建对象的个数有限制)

  • 相关阅读:
    sqlserver把小数点后面多余的0去掉
    C#使用Linq对DataGridView进行模糊查找
    winform dataGridView DataGridViewComboBoxColumn 下拉框事件
    JGit与远程仓库链接使用的两种验证方式(ssh和https)
    Quartz不用配置文件配置启动
    SpringBoot之退出服务(exit)时调用自定义的销毁方法
    Java注解Annotation
    Java自定义数据验证注解Annotation
    我的ehcache笔记
    Java中泛型Class<T>、T与Class<?>
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/6718240.html
Copyright © 2011-2022 走看看