现实生活中的事物都归属于一定的类别,比如,狮子是一种(IS_A)动物,为了在计算机中模拟这种关系,面向对象的语言引入了继承(inherit)特性。

构成继承关系的两个类中,Animal称为父类(parent class)或基类(base class),Lion称为子类(child class)。

父类与子类之间拥有以下两个基本特性:

1.是一种(IS_A)关系:子类是父类的一种特例。

2.扩充(Extends)关系:子类拥有父类所没有的功能。

 class Animal{}class Lion : Animal {}

可以看到,C#中用一个冒号间隔开父类和子类。

类成员的访问权限

面向对象编程的一大特性就是可以控制类成员的可访问性。当前主流的面向对象语言都拥有以下三种基本的可访问性

继承条件下的类成员访问权限

1.所有不必让外人知道的东西都是私有的。

2.所有需要向外提供服务都是公有的。

3.所有的“祖传秘方”,“秘不外传”的都是保护的。

internal

关键字internal所确定的“内部”访问性。

internal有点像public,外界类也可以直接访问声明为internal的类或类的成员。但这只局限于同一个程序集中。

internal是C#默认可访问性,就是说,如果某个类没有任何可访问性关键字在它前面的则是internal。

方法重载、隐藏域虚方法调用

子类方法与父类方法之间的关系可以概括以下三种:

1.扩充(Extend):子类方法,父类没有;

2.重载(Overload):子类有父类的同名函数,但参数类型或数目不一样;

3.完全相同:子类方法与父类方法从方法名称到参数类型完全一样。

在子类与父类中方法完全相同的情况下,调用哪个方法有对象变量的类型决定。

重写(override)与虚方法调用

    class Animal{public virtual void OverrideF(){System.Console.WriteLine("Animal OverideF");}}class Lion : Animal{public override void OverrideF(){System.Console.WriteLine("Lion OverideF");}}

static void Main(string[] args){Lion lion = new Lion();Animal animal;animal = lion;animal.OverrideF();Console.ReadKey();}

结果为:

Lion OverideF

在animal引用不同对象是,其运用的结果可能完全不一样,因此我们在编程时只针对父类变量提供的对外接口编程,就使我们的代码成了“变色龙”,传给它不同的子类对象,就干不同的事。

这就是面向对象的“虚方法调用(Virtual Method Invoke)”特性。

面向对象语言拥有的“虚方法调用”特性,使我们可以只用同样的一个语句,在运行时根据对象类型而执行不同的操作

转载于:https://www.cnblogs.com/guyg/p/3881378.html

C#编程语言与面向对象——继承相关推荐

  1. Python之面向对象继承和派生

    Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...

  2. 面向对象 - 继承/组合 - 总结

    面向对象 - 继承:1.继承: 类与类之间的关系 什么是什么的关系 eg:人是动物 狗是动物 功能: 解决代码重用问题, 创建新类的方式, 类: 可继承一个或多个父类: 父类 == 基类/超类 类 = ...

  3. 12.面向对象(继承/super/接口/抽象类)

    面向对象 继承与派生 继承 继承顺序 继承原理 子类调用父类的方法(super) 组合 接口 接口的概念: 接口的概念解释和使用: python中的接口: 抽象类 面向对象 继承与派生 继承 什么是继 ...

  4. 什么是继承python_面向对象继承

    Python 面向对象继承 一 什么是面向对象的继承 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A"继承自"另一个类别 ...

  5. JavaScript面向对象--继承 (超简单易懂,小白专属)...

    JavaScript面向对象--继承 (超简单易懂,小白专属) 一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之 ...

  6. python中的继承有什么特点_Python中 什么是面向对象-继承和多态

    文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解 https://www.piqizhu.com/v/zaX9K4pd4GE 上一篇文章<python教 ...

  7. 回顾javaScript的面向对象继承

    javaScript面向对象继承           由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js的原型prototype机制或者用a ...

  8. Python学习笔记(十九)面向对象 - 继承

    Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...

  9. 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符

    11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...

最新文章

  1. TF-IDF模型的概率解释
  2. php mysql study_phpStudy 升级 MySQL5.7
  3. 1.PL/SQL Developer的快捷键
  4. 开启Windows8里面的Hyper-V虚拟机功能
  5. linux hadoop 本地,Linux系统下运行基于本地的Hadoop
  6. pytest 15 fixture之autouse=True
  7. xgboost之spark上运行-scala接口
  8. Android基于mAppWidget实现手绘地图(二)--概要
  9. 计算机二级指针,C语言——二级指针
  10. 批量刷新远程物化视图的方法(备用)
  11. Max OS X下关于JDK的那些事
  12. vi测试仪维修成功率高吗?_欧森杰检测仪:臭氧检测仪的六大特点,您真的了解吗?...
  13. 2020年书法落款_快来排排2020鼠年书法落款时间表,收!
  14. python从入门到精通-终于懂得python从入门到精通教程
  15. 尼奥智能陪伴机器人如何绑定设备_巴巴腾 智能陪护儿童机器人A3,为儿童专业定制的小伙伴...
  16. Windows内核结构
  17. steam用移动网不显示头像
  18. 作为面试官,我是如何甄别应聘者的包装程度
  19. 74HC245芯片简析
  20. 怎样才能让青少年培养起阅读习惯?听听猿辅导这四位嘉宾怎么说

热门文章

  1. java 偶数求和 数组_JAVA实现幻方
  2. python的pandas库内的函数_python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)...
  3. oracle 大页配置,ORACLE 启用大页内存
  4. linux 子系统 巡检,Linux 系统巡检
  5. git 在拉取代码的时候connect 谷歌报错_工具 | 手把手教你在VSCode中使用Git
  6. 杭州中国移动java待遇_【中国移动杭州研发中心Java面试】移动杭研社招java中级面试-看准网...
  7. hashmap中用红黑树不用其他树_HashMap面试专题:常问六题深入解析
  8. lampp mysql 等待响应时间很长,XAMPP 最大执行时间(max_execution_time) 问题
  9. qstringlist格式怎么写到txt_进阶能力 | 一招解决TXT电子书乱码问题
  10. spring-boot入门之二——验证、AOP日志、异常处理