• private,protected,public和internal
  1. private:是完全私有的,只有本类自己能用[好比自己的老婆,只有你自己可以调用,其他谁都不可以]
  2. protected:可被外界看到,但是不能调用,只有本类和子类可以调用(属性和方法都可被子类所继承调用)[好比老爸的钱包,只会自己用或者继承给儿子用,就是不能给别人用].
  3. private与protected共同点:都不可以被外界访问
  4. publlic:对任何类和成员都完全公开[好比公用电话,谁都可以用]
  5. internal:同一应用程序集内部(在vs.net中的一个项目,这里的项目是指单独的项目,而不是整个解决方案)可以访问该类[好比公司电话,只能公司内部人员使用]
  6. protected internal:只能在同意应用程序集内本类和派生类访问[只能公司内部人员以及公司子公司的人可以使用]
  7. public和internal区别:前者的成员可以跨程序集访问,internal不行.但是在同一应用程序集中,两者有相同的效果.
  • sealed,new,virtual,abstract与override
  1. sealed:密封类不会有子类,不能被继承---"断子绝孙"
  2. new:用于显示隐藏从基类继承的成员,当子类方法名跟父类方法名字一样的时候,在使用子类时调用的方法是new关键字新定义出来的方法用的子类的方法,而不是父类的.---"你是你的,我是我的"
  3. virtual:用于修改方法或属性的声明,被称作虚成员.调用虚方法时,将为重写成员检查该对象的运行时类型,将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员---"为子孙后代"
  4. abstract:---"好比上帝,是人们对神的抽象,看似什么都能干,其实什么都干不了"
    1. 可以和类,方法,属性,索引器以及事件一起使用.
    2. 类中声明使用abstract修饰符,指示该类只能是其他类的基类.
    3. 标记为抽象或者包含在抽象类中的成员必须通过从抽象类派生的类来实现
    4. 不能被实例化
    5. 不能用sealed修饰,这表示该类不能呗继承了
    6. 继承抽象类的子类必须实现抽象类的所有抽象成员
    7. 抽象成员只能在抽象类中
    8. 抽象方法声明不提供具体实现,连{}都不写
    9. 抽象方法不能使用static或者virtual修饰符
    10. 静态属性不能用abstract修饰
    11. 派生类中使用override重写基类抽象方法
  5. override:---"一手遮天"
    1. 使用override修饰符来修改方法,属性,索引器,事件.主要提供子类对父类方法的重写,覆盖abstract,virtual两种关键字修饰的成员
    2. new和override的相同点:都可以对基类成员进行隐藏,都可以用base关键字调用基类成员
    3. 区别:用override的基类的方法必须要用virtual或者abstract,而new不必要.
    4. 用基类对象调用基类的virtual方法时,override重写的派生类的方法hi被访问,而new重写的派生类中的方法不会被访问.
  • abstract抽象类和interface接口
  1. abstract特点:
    1. 抽象方法只做声明,而不包括实现没有实现体的虚方法
    2. 抽象类不能被实例化,不能new
    3. 抽象类可以,但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
    4. 派生类必须覆盖基类的抽象方法.
    5. 抽象类可以派生自另一个抽象类,可以覆盖基类的抽象方法,也可以不覆盖,如果不覆盖,则其派生类必须覆盖他们.
  2. interface特点:
    1. 接口是引用类型
    2. 不能被实例化
    3. 只能包含实现的方法声明
    4. 成员可以包括方法,,属性,索引器和事件

c#基础知识对比(面向对象)的更多相关文章

  1. javascript的基础知识及面向对象和原型属性

    自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...

  2. C#基础知识之面向对象以及面向对象的三大特性

    在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...

  3. JAVA基础知识之面向对象编程知识汇总

    JAVA基础课程部分面向对象已经学习完成,知识结构如下: 总体知识框架: 类的结构: 面向对象编程三大特征: 关键字和抽象类接口等: 常见知识汇总: 成员变量和局部变量比较 有无返回值方法比较: 权限 ...

  4. [C#基础]基础知识一: 面向对象的基本知识.

    激励自己有时间多看看.!! C#基础共分为七个部分: 一: 面向对象 二: 值类型, 引用类型, 字符串操作 三: 集合文件操作 四: 正则表达式 五: XML操作 六: 委托, 事件 七: 反射 1 ...

  5. C# 篇基础知识3——面向对象编程

    面向过程的结构化编程,例如1972年美国贝尔研究所推出的C语言,这类编程方式重点放在在定函数上,将较大任务分解成若干小任务,每个小任务由函数实现,分而治之的思想,然而随着软件规模的不断扩张,软件的复杂 ...

  6. js与juery基础知识对比(一)---2017-05-06

    用表格做的,想要对比的内容一目了然,红色部分为重点   js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...

  7. js与jquery基础知识对比(一)---2017-05-06

    用表格做的,想要对比的内容一目了然,红色部分为重点   js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...

  8. 你不得不知的Java基础知识

    本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...

  9. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

随机推荐

  1. maven配置编译路径

    在build标签下添加 <build> <sourceDirectory>src/main/java</sourceDirectory> <resources ...

  2. java_Cookies_1_商品浏览历史记录servlet2

    public class CookiesServlet2 extends HttpServlet { // 显示商品详细信息 public void doGet(HttpServletRequest ...

  3. endif、endforeach

    <?php if ($a == 5): ?>  <div>等于5</div><?php elseif ($a == 6): ?>  <div> ...

  4. Pitfalls of the Hibernate Second-Level / Query Caches--reference

    This post will go through how to setup the Hibernate Second-Level and Query caches, how they work an ...

  5. C# 之 OpenFileDialog的使用

    一.打开文件对话框(OpenFileDialog) 1. OpenFileDialog控件有以下基本属性 [1]InitialDirectory:对话框的初始目录 [2]Filter:要在对话框中显示 ...

  6. WebAPI返回JSON的正确格式

    最近打算用WebAPI做服务端接口,返回JSON供ANDROID程序调用,结果试了好几次JSONObject都无法解析返回的JSON字符串.看了一下服务端代码: public string Get() ...

  7. How to solve GM MDI cannot complete the installation

    Dear Joy, I have a problem using GM MDI diagnostic tool. When I installed it on my laptop, the tool ...

  8. JAVA_eclipse 保留Java文件时自动格式化代码和优化Import

    Eclipse 保存Java文件时自动格式化代码和优化Import Eclipse中format代码的快捷方式是ctrl+shift+F,如果大家想保存 java文件的时候 自动就格式化代码+消除不必 ...

  9. 修改UILabel的行间距

    在iOS开发中  有时候为了调整一些UI效果  我们需要调整UILabel之间的行间距: contentLabel.text:label上显示的文字内容; 5:label行间距; contentLab ...

  10. 转:解决OM的Price List输入找不到对应库存的ITEMS的问题

    一,保证Item Validation Organization参数的值一致 Item Validation Organization参数的值是填库存组织,通过这个值,可以分隔OM所能使用的库存Ite ...