一:类
 
   1. 类的定义:
          类是对一组具有相同属性和行为的对象的抽象;
   2. 类的构成:
         1) 声明类:类的默认修饰符为internal
                  public/internal  clss 类名
    {
    }

2) 构造函数:
               带参数的构造函数:
               私有构造函数:
               静态构造函数;
                   用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调                   用静态构造函数。

class Chen
                   {
                      static Chen()   --------->1.没有修饰符,没有参数
                       {                         2.创建实例或引用静态成员之前,自动调用
                       }                         3.无法直接调用
                      Chen()
                      {
                      }
                   }

3) 析构函数:

4) 构建成员:
                  成员变量:
                  方法:
                  事件:
                  委托:
                  索引器:
                  其他类:

二:接口:
      interface IChen
      {
         print();
      }
      class A : IChen
      {
         print方法实现;
      }
      class B: IChen
      {
         print方法实现;
      }
      在Main窗体中,点击不同按钮,要调用不同类的print方法;
      创建接口变量:IChen Iprint;
      if(btn1)
      {
          Iprint = objA;  //如果是这样,将该接口变量指向该对象实例
      }
      else if (btn2)
      {
          Iprint = objB;    //如果是这样,将该接口变量指向该对象实例
      }
      Main窗体中的print方法:
      if(this.Iprint!=null)
      {
  this.Iprint.print();   //调用接口的方法 ,  因为此时该接口变量已经动态指向了不同的对象
      }

三:类和接口:

接口                                                                   类
 
 1.接口本身:不能直接实例化(引用实现该接口的类的对象)                         直接实例化
             多继承,一个接口可以继承自多个接口                                 单继承,一个类只可以继承自一个基类
             不提供实现 它有类来实现                                            实现类要实现接口的每个方面
 2.接口成员:可以包括方法 事件 索引器 属性                                      同
             接口成员要全部是公共访问级别                                       多种访问级别
             不能在后续版本中添加新成员

接口和抽象类的选择:
   同:
      都支持协定和实现的分离;都是实现抽象机制的方法;
      不能进行实例化
   异:
      接口不能提供成员的实现细节;抽象类可以;
      接口不能在后续添加新成员;抽象类可以添加新成员实现更多功能;

如何选择:
   1) 优先选择抽象类,因为它可以在后续添加新成员可;
   2) 如果类要实现多个协定 也就是多继承,定义接口;
   3) 值类型要求多态行为,定义接口;
   4) 协定适合于多种类型,定义接口;

四:类型设计:
   1. 类
       1) 抽象类:
            不要在抽象类中定义公共的public 和受保护的内部protected internal构造函数;应定义成protected或private;
       2) 静态类:
       4) 抽象类和接口:如上
       5) 类和结构:如下

2. 结构
        设计准则:逻辑上表示单个值;实例大小小于16字节;不可变;不别频繁装箱;
   3. 接口
          避免定义空接口(标记接口)
   4. 枚举
  
   5. 委托:

委托是一种对象类型,表示对方法的引用而不是对方法名称的引用。使用委托的意义在于在运行时动态的调用方法;
调用或执行一个委托,将执行该委托所引用的方法;
委托要求它所引用的方法和它有同样的返回值和参数类型;

public class MyDelegate
{

// 1.定义委托
public delegate int Call(int num1,int num2);

class Math
{
   // 2. 方法的实现,它和所定义的委托有同样的返回值,以及相同类型的参数
   public int add(int a1,int a2)
   {
      return a1+a2;
   }

public int divide(int b1,int b2)
   {
      return b1-b2;
   }
}

class TestDelegate
{
   static void Main()
   {
      int result;

Call objCall;  3. //定义一个委托类型的空对象
      Math objMath= new Math();
    
      objCall = new Call(objMath.add);  //4. 实例化该委托对象 使其引用某个具体的方法,将方法做为参数传递;

result=objCall(10,20);  //5.调用委托,实际上是使用委托对方法进行实例化,
                              //这里不是调用委托的实现,因为他没有实现,调用的是与委托关联的方法的实现;

Console.WriteLine("the result is :",result);

}
}

}

5. 嵌套类型:
         嵌套类型可以访问声明类型中的所有其他成员

封装:
      封装最大的益处就是,当一个实体放生变动,不波及其他实体;
     
继承:

方法重写:

base 关键字:
   用于从子类中访问基类成员; 如java中的super
   使用base关键字只能访问基类的构造函数 实例方法或实例属性 ,不能访问基类的静态方法。

override 关键字:
    用于重写基类中的virtual abstract 方法;但重写的方法和基类中的方法有同样的访问级别

new关键字:
   用于隐藏基类方法;
   1.  使用 new 关键字时,调用的是新的类成员而不是已被替换的基类成员。这些基类成员称为隐藏成员。
   2.  如果将派生类的实例强制转换为基类的实例,就仍然可以调用隐藏类成员

virtual关键字:
    将方法定义为多态,也就是对可修改的方法的声明;在子类中使用override关键字实现;

abstract关键字:
    将方法定义为抽象,由子类具体实现;

override 和 new 对方法的版本控制:
    当子类和基类具有相同的方法名称:

首先基类中的方法要有virtual关键字;

如果子类方法不带这两个方法:会默认添加new 子类对象调用的是基类的方法;
       如果子类方法带override:则子类对象调用该方法;
       如果子类方法带new:则会子类对象调用基类中的方法;
       如果子类方法中使用base:和使用new是同样效果;
         public void Fun()
        {
            base.Fun();
            //Console.WriteLine("这是子类B");
        }

多态:
     一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。C# 中的每种类型都是多态的.

方法重载:
        在同一类型中定义多个具有相同名称,不同参数列表(参数个数不同,参数的顺序不同),返回值可同可不同的方法;

转载于:https://www.cnblogs.com/lf_software/archive/2009/03/03/1402364.html

C#中的OOP相关概念相关推荐

  1. MPLS转发过程中涉及的相关概念—Vecloud微云

    MPLS术语 • 标签(Label):是一个短而定长的.只具有本地意义的标识符,用于唯一标识一个分组所属的FEC.在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标签,但是一台设备上,一 ...

  2. 不会JS中的OOP,你也太菜了吧!(第二篇)

    一.你必须知道的 1> 原型及原型链在继承中起到了关键的作用.所以你一定要理解他们. 2> 不会JS中的OOP,你也太菜了吧!(第一篇) 二.继承的6种方法 1> 原型链继承 原型链 ...

  3. php中的oop,在现有PHP中加入OOP

    DISCLAIMER: since question obviously has been already answered, this is a long form comment on provi ...

  4. php中的oop,php oop有什么用?

    php oop有什么用?什么是oop?本篇文章我们就给大家介绍PHP oop的意思及作用,希望对需要的朋友有所帮助! 什么是OOP?什么是面向对象编程? 面向对象编程,又称OOP(全称Object-O ...

  5. 永磁同步电机力矩控制(九):定子磁场中的若干相关概念

    我在IND4汽车人App可以帮助大家解答汽车电子的相关技术问题,欢迎通过IND4汽车人App向我咨询. 在永磁同步电机中,转子磁场中因为有永磁材料构成此磁体的南极和北极,转子磁场的产生机理及在空间的分 ...

  6. 计算机图形学中消隐的相关概念及算法

    本文整理自西安交通大学软件学院祝继华老师的计算机图形学课件,请勿转载 文章目录 基本概念 提高消隐算法效率的常见方法 利用连贯性 包围盒技术 背面剔除 空间分割技术 物体分层表示 消隐的分类 按消隐对 ...

  7. oracle中LOB字段相关概念(自动创建LOB索引段和重建索引方法)

    OBs,或Large Objects字段,是Oracle中用于处理存储非字符数据推荐的一种字段类型,例如mp3,video,图片,和long字符串数据.二进制大对象,或BLOBs,字符大对象,或CLO ...

  8. 数学中的线性相关概念

    1.  线性函数 在数学里,线性函数(也称一次函数)这名词主要是用于两种不同,但相关的领域. 在初级代数与解析几何,线性函数是只拥有一个变量的一阶多项式函数(形如f(x)=an*xn+an-1*x(n ...

  9. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

    前  言 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面 ...

最新文章

  1. 受用一生的高效 PyCharm 使用技巧(六)
  2. Worktile 进军软件开发与协作的初心与野心
  3. 阿里云服务centOS7下安装rabbitmq
  4. Django:文章详情页面评论功能需要登录后才能使用,登录后自动返回到文章详情页...
  5. ZeroMQ之Publish/Subscribe (Java)
  6. WebLogic启动与简单项目配置
  7. 希尔排序Linux下C实现
  8. 构造前缀贪心+ 计蒜客 子矩阵求和
  9. 8.2-全栈Java笔记:字符串相关类(String/StringBuilder /StringBuffer)
  10. 计算机系统运行费,关于同意计算机离港系统实行收费的批复
  11. makefile终极目标
  12. 如何简单理解光圈大小对手机摄影的影响?
  13. 湖南大学夏令营c语言考试题,夏令营试题
  14. dgraph部署和使用
  15. python玩转我的世界_PYTHON玩转我的世界——批量生成铁傀儡
  16. python生成随机的大写字母_Python — 随机生成10个大写、小写字母、特殊字符 string模块...
  17. mysql查看数据库事务隔离级别_MySQL查看和修改事务隔离级别的实例讲解
  18. 工具栏的打印图标不见了_电脑工具栏图标不见了怎么办啊
  19. .globl _start 简介
  20. flash位图技术研究篇(9):2D平面映射球体

热门文章

  1. Apache服务器主配置文件 httpd.conf 中文版
  2. MATLAB报错“Integers can only be raised to positive integral powers.“
  3. CTF web题总结--SSRF
  4. wince 微软服务器,大众拥抱微软 推出WinCE 4.0 Pocket PC
  5. 分布式事务 TCC-Transaction 源码分析 —— 项目实战
  6. 【pwnable】asm之write up
  7. 大数据征信需把控 数据源的“量”与“度”
  8. 关于PHPExcel导出Excel时身份证,数字会导出为科学计数的处理方法
  9. (转)Windows重启延迟删除,重命名技术原理
  10. session不是线程安全的