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.单继 ...
随机推荐
- hdu 5465 Clarke and puzzle 二维线段树
Clarke and puzzle Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php? ...
- C++容器类对象函数參数问题
总之中的一个句话:容器类对象作为函数參数,与整数类型作为函数參数的传递特性同样. 验证程序 #include "stdafx.h" #include <iostream> ...
- ListView Video
com.baidu.frontia.FrontiaApplication ListView Video <item name="android:windowBackground&quo ...
- Android开发环境中的概念和工具介绍
最近学习Android开发,以前使用C/C++多一些,现在再补点Java知识,不管是哪种语言,都不过是一种工具而已,真的学起来,大同小异,无谓优劣.学习Android编程肯定是要先从环境搭建开始,无论 ...
- paip.mysql 5.6 安装总结
paip.mysql 5.6 安装总结 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/atti ...
- C栈stack
栈是一种 特殊的线性表 栈仅能在线性表的一端进行操作 栈顶(Top):允许操作的一端 栈底(Bottom):不允许操作的一端 Stack的常用操作 创建栈 销毁栈 清空栈 进栈 出栈 获取栈顶元素 ...
- 读取XML帮助类
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; us ...
- PAT 1015
1015. Reversible Primes (20) A reversible prime in any number system is a prime whose "reverse& ...
- C# 之 Math取整
主要用到 System 命名空间下的一个数据类 Math ,调用他的方法. C#取整函数使用详解: 1.Math.Round是"就近舍入",当要舍入的是5时与"四舍五入& ...
- 求教jsp 问题,能在一台电脑上运行,不能在另外一台上运行?
package com.mvc; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.se ...