c#基础知识对比(面向对象)
- private,protected,public和internal
- private:是完全私有的,只有本类自己能用[好比自己的老婆,只有你自己可以调用,其他谁都不可以]
- protected:可被外界看到,但是不能调用,只有本类和子类可以调用(属性和方法都可被子类所继承调用)[好比老爸的钱包,只会自己用或者继承给儿子用,就是不能给别人用].
- private与protected共同点:都不可以被外界访问
- publlic:对任何类和成员都完全公开[好比公用电话,谁都可以用]
- internal:同一应用程序集内部(在vs.net中的一个项目,这里的项目是指单独的项目,而不是整个解决方案)可以访问该类[好比公司电话,只能公司内部人员使用]
- protected internal:只能在同意应用程序集内本类和派生类访问[只能公司内部人员以及公司子公司的人可以使用]
- public和internal区别:前者的成员可以跨程序集访问,internal不行.但是在同一应用程序集中,两者有相同的效果.
- sealed,new,virtual,abstract与override
- sealed:密封类不会有子类,不能被继承---"断子绝孙"
- new:用于显示隐藏从基类继承的成员,当子类方法名跟父类方法名字一样的时候,在使用子类时调用的方法是new关键字新定义出来的方法用的子类的方法,而不是父类的.---"你是你的,我是我的"
- virtual:用于修改方法或属性的声明,被称作虚成员.调用虚方法时,将为重写成员检查该对象的运行时类型,将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员---"为子孙后代"
- abstract:---"好比上帝,是人们对神的抽象,看似什么都能干,其实什么都干不了"
- 可以和类,方法,属性,索引器以及事件一起使用.
- 类中声明使用abstract修饰符,指示该类只能是其他类的基类.
- 标记为抽象或者包含在抽象类中的成员必须通过从抽象类派生的类来实现
- 不能被实例化
- 不能用sealed修饰,这表示该类不能呗继承了
- 继承抽象类的子类必须实现抽象类的所有抽象成员
- 抽象成员只能在抽象类中
- 抽象方法声明不提供具体实现,连{}都不写
- 抽象方法不能使用static或者virtual修饰符
- 静态属性不能用abstract修饰
- 派生类中使用override重写基类抽象方法
- override:---"一手遮天"
- 使用override修饰符来修改方法,属性,索引器,事件.主要提供子类对父类方法的重写,覆盖abstract,virtual两种关键字修饰的成员
- new和override的相同点:都可以对基类成员进行隐藏,都可以用base关键字调用基类成员
- 区别:用override的基类的方法必须要用virtual或者abstract,而new不必要.
- 用基类对象调用基类的virtual方法时,override重写的派生类的方法hi被访问,而new重写的派生类中的方法不会被访问.
- abstract抽象类和interface接口
- abstract特点:
- 抽象方法只做声明,而不包括实现没有实现体的虚方法
- 抽象类不能被实例化,不能new
- 抽象类可以,但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类
- 派生类必须覆盖基类的抽象方法.
- 抽象类可以派生自另一个抽象类,可以覆盖基类的抽象方法,也可以不覆盖,如果不覆盖,则其派生类必须覆盖他们.
- interface特点:
- 接口是引用类型
- 不能被实例化
- 只能包含实现的方法声明
- 成员可以包括方法,,属性,索引器和事件
c#基础知识对比(面向对象)的更多相关文章
- javascript的基础知识及面向对象和原型属性
自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; cons ...
- C#基础知识之面向对象以及面向对象的三大特性
在C#基础知识之类和结构体中我详细记录了类.类成员.重载.重写.继承等知识总结.这里就记录一下对面向对象和面向对象三大特性的广义理解. 一.理解面向对象 类是面向对象编程的基本单元,面向对象思想其实就 ...
- JAVA基础知识之面向对象编程知识汇总
JAVA基础课程部分面向对象已经学习完成,知识结构如下: 总体知识框架: 类的结构: 面向对象编程三大特征: 关键字和抽象类接口等: 常见知识汇总: 成员变量和局部变量比较 有无返回值方法比较: 权限 ...
- [C#基础]基础知识一: 面向对象的基本知识.
激励自己有时间多看看.!! C#基础共分为七个部分: 一: 面向对象 二: 值类型, 引用类型, 字符串操作 三: 集合文件操作 四: 正则表达式 五: XML操作 六: 委托, 事件 七: 反射 1 ...
- C# 篇基础知识3——面向对象编程
面向过程的结构化编程,例如1972年美国贝尔研究所推出的C语言,这类编程方式重点放在在定函数上,将较大任务分解成若干小任务,每个小任务由函数实现,分而治之的思想,然而随着软件规模的不断扩张,软件的复杂 ...
- js与juery基础知识对比(一)---2017-05-06
用表格做的,想要对比的内容一目了然,红色部分为重点 js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...
- js与jquery基础知识对比(一)---2017-05-06
用表格做的,想要对比的内容一目了然,红色部分为重点 js jquery 取元素 id: document.getElementById("aa"); 取到的是dom对象 cla ...
- 你不得不知的Java基础知识
本篇博客主要记录Java中面向对象的概念和Java语法的基础知识. 面向对象 什么是面向对象 面向对象是一种优秀的软件设计思想,是相对于面向过程.面向切面等设计思想的一种软件设计理念.它的核心思想是运 ...
- 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.单继 ...
随机推荐
- CircularProgressBar
https://github.com/semicoder/CircularProgressBar https://github.com/amurani/MeterView
- 同时使用ADO与Excel类库冲突的问题
客户需要一个Demo程序实现Access数据库表导出到Excel表格,并将表中存储的照片(OLE对象)以其中一个字段(编号)命名存储到本地.程序中引入了ADO操作Access数据库("C:\ ...
- Linux PAM&&PAM后门
Linux PAM&&PAM后门 我是壮丁 · 2014/03/24 11:08 0x00 PAM简介 PAM (Pluggable Authentication Modules )是 ...
- jQuery 学习笔记(未完待续)
一.jQuery概述 宗旨: Write Less, Do More. 基础知识: 1.符号$代替document.getElementById()函数 2.使 ...
- windows身份验证模式和SQL server身份验证模式 有什么不同
两个验证方式是有明显不同的. 主要集中在信任连接和非信任连接. windows 身份验证相对于混合模式更加安全,使用本连接模式时候,sql不判断sa密码,而仅根据用户的windows权限来进行身份验证 ...
- ajax检查用户名
Ajax实现的效果 究竟Ajax能实现什么功能呢?今天下午学习了一下Ajax,现在跟大家分享一下我的学习心得.Ajax是什么?工作机制又是什么?可能不大准确,只是我个人看了视频学习后的一点点看法. A ...
- java_不知道数据类型情况下,数组遍历-反射
if(items.getClass().isArray){ this.collection = new ArrayList(); int length = Array.getLength(items) ...
- Java基础知识强化之网络编程笔记15:Android网络通信之 Android异步任务处理(AsyncTask使用)
AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的 ...
- h5拖放-基础知识
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- SWT中的布局之-----FormLayout(表格式布局)
表格式(FormLayout类) 表格式布局管理器,通过创建组件各个边的距离来布局组件,和GridLayout一样强大. 用GridLayout与FormLayout都可以实现相同的界面效果,但有时使 ...