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 ( );      //调用,直接通过类名点出 

 

非静态方法

         需要实例化对象

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

静态方法 

         不需要实例化对象

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

     

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

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

用处

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

    两个类之间传递信息

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

 

posted @ 2017-04-16 11:18  唐宏昌  阅读(470)  评论(0编辑  收藏  举报