• C#封装、多态、抽象、接口、匿名方法等学习


    1:封装

       将对象进行封装,并不等于将整个对象完全包裹起来,而是根据实际需要,设置一定的访问权限,用户根据不同的权限调用对象提供的功能,在C#语言中,可以使用修饰符public、internal、protected、private分别修饰类的字段、属性和方法。

    2:继承,主要是注意继承的格式

    [csharp] view plaincopy
    1. public class ParentClass  //父类  
    2. {  
    3.    public ParentClass();  
    4. }  
    5.   
    6. public class ChildClass : ParentClass  :子类  
    7. {  
    8.    public ChildClass();  
    9. }  

    3:多态

        多态是面向对象编程思想的核心之一,多态的意思是:当从父类派生出了一些子类后,每个子类都由不同的代码实现,因此,同样的调用可以产生不同的效果,主要由子类来决定,在程序运行时,面向对象的语言会自动判断对象的派生类型,并调用相应的方法。

       在C#中多态分为两种类型,即编译时多态和运行时多态,编译时多态是通过重载来实现的,运行时多态是系统运行时根据实际情况来决定何种操作。

    实例代码:

    1. public class MyIntertest   
    2. {  
    3.    public virtual void interest()   
    4.    {  
    5.       Console.WriteLine("我的爱好");  
    6.       Console.ReadLine();  
    7.    }  
    8. }  
    9.   
    10. public class Writer : MyIntertest  
    11. {  
    12.     public override void Interest()   
    13.     {  
    14.        Console.WriterLine("写作");  
    15.     }  
    16. }  
    17.   
    18. public class Program : MyInterest  
    19. {  
    20.     public override void interest()   
    21.     {  
    22.         Console.WriteLine("编程");  
    23.     }  
    24. }  
    25.   
    26. public class Sing : MyInterest   
    27. {  
    28.     public override void interest()   
    29.     {  
    30.         Console.WriteLine("唱歌");  
    31.     }  
    32. }  
    33.   
    34.   
    35. public class Test   
    36. {  
    37.    public static int main(String[] args)   
    38.    {  
    39.        MyInterest[] interests = new MyInterest[4];  
    40.        interests[0] = new Write();  
    41.        interests[1] = new Program();  
    42.        interests[2] = new Sing();  
    43.        interests[3] = new MyInterest()  
    44.          
    45.        foreach ( MyInterest interest in interests)  
    46.        {  
    47.            interest.interest();  
    48.        }  
    49.          
    50.        return 0;  
    51.    }  
    52. }  

    4:

    接口:    界面,是两个有界事物的交界处,通过界面可以与对方交互,交互的方式由约定产生,这种约定就是由具体交互动作的规则,只要遵循规则 即可与拥有规则的事物交互。    在C#中,接口是声明类具有的方法和成员的、自身不能被实例化的、只能被继承的特殊的类,其只管描述事物的特性而实现特性的任务却由其他类负责。    接口中不能包含字段    接口定义了类要实现的一系列方法,但是它本身不能实现这些方法,只是用逻辑结构方式来描述。        在接口的成员中,只能是方法、属性、事件或者索引器,它的成员不能包含常数、字段、运算符、实例构造函数、析构构造函数或类型,也不能包含任意种类的    静态成员。    

    [csharp] view plaincopy
    1. interface MyInterface  
    2.   {  
    3.      string STR    //属性STR  
    4.      {  
    5.        get;       //属性可读  
    6.        set;       //属性可写  
    7.      }      
    8.      void outMethod();   //成员方法outMethod  
    9.   }  
    10.     
    11.   class InheritInterface : MyInterface  
    12.   {  
    13.      string str = "21天学习C#";    //定义并初始化字符串  
    14.      public string STR  
    15.      {  
    16.         get  
    17.         {  
    18.            return str;  
    19.         }  
    20.         set  
    21.         {  
    22.            str = value;  
    23.         }  
    24.      }    
    25.      public void outMethod()  
    26.      {  
    27.         Console.WriteLine(this.STR);  
    28.      }   
    29.   }  



    5: 域和属性     域也叫成员变量,它可以用来保存类的各种信息,域可以分为静态域和实例域两种,其中,静态域属于类,实例域属于对象。     属性是一种用来访问对象的特殊成员。          域的声明:和普通变量相同,可以用new, public, protected, static和readonly等         

    [csharp] view plaincopy
    1. public class Date  
    2.    {  
    3.       private string name = "hoan";  
    4.       public string nameAttr   
    5.       {  
    6.         get  //使用get访问器读值  
    7.         {  
    8.            return name;  
    9.         }  
    10.         set  //使用set访问器写值  
    11.         {  
    12.              
    13.         }  
    14.       }  
    15.    }  


    6:匿名方法:
       匿名方法的作用是将代码块当作参数来使用,使代码对于委托的实例很直接,很便利,可以减少实例化委托对系统资源的开销。匿名方法还共享了
       本地语句包含的函数成员访问权限。
       
       匿名方法的使用:
        

    [csharp] view plaincopy
    1. namespace codemo  
    2.     {  
    3.        delegate void Writer(string s);  //委托所调用的命名方法  
    4.        class Program   
    5.        {  
    6.            static void NamedMethod(string k)   //委托所调用的命名方法  
    7.            {  
    8.               System.Console.WriteLine(k);   
    9.            }  
    10.            static void Main(string[] args)   
    11.            {  
    12.               Writer w = delegate(string j)  //委托类调用匿名方法  
    13.               {  
    14.                  System.Console.WriteLine(j);  
    15.               }  
    16.               w("调用了匿名方法");  
    17.               Console.WriteLine();  
    18.               w = new Writer(NamedMethod);  //创建对象  
    19.               w("调用了命名方法");          //调用命名方法  
    20.               Console.ReadLine();       
    21.            }   
    22.        }   
    23.     }  
  • 相关阅读:
    ES6躬行记(6)——Symbol
    ES6躬行记(5)——对象字面量的扩展
    ES6躬行记(4)——模板字面量
    ES6躬行记(3)——解构
    ES6躬行记(2)——扩展运算符和剩余参数
    构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
    Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
    Linux就这个范儿 第14章 身在江湖
    Linux就这个范儿 第13章 打通任督二脉
  • 原文地址:https://www.cnblogs.com/gc2013/p/3957206.html
Copyright © 2020-2023  润新知