C#编程语言与面向对象——继承
现实生活中的事物都归属于一定的类别,比如,狮子是一种(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#编程语言与面向对象——继承相关推荐
- Python之面向对象继承和派生
Python之面向对象继承和派生 什么是继承: 继承是一种创建新的类的方法.在Python中,新建的类可以继承自一个或多个父类.原始类称为基类或超类. 新建的类称为派生类或子类. Python中类的继 ...
- 面向对象 - 继承/组合 - 总结
面向对象 - 继承:1.继承: 类与类之间的关系 什么是什么的关系 eg:人是动物 狗是动物 功能: 解决代码重用问题, 创建新类的方式, 类: 可继承一个或多个父类: 父类 == 基类/超类 类 = ...
- 12.面向对象(继承/super/接口/抽象类)
面向对象 继承与派生 继承 继承顺序 继承原理 子类调用父类的方法(super) 组合 接口 接口的概念: 接口的概念解释和使用: python中的接口: 抽象类 面向对象 继承与派生 继承 什么是继 ...
- 什么是继承python_面向对象继承
Python 面向对象继承 一 什么是面向对象的继承 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念.如果一个类别A"继承自"另一个类别 ...
- JavaScript面向对象--继承 (超简单易懂,小白专属)...
JavaScript面向对象--继承 (超简单易懂,小白专属) 一.继承的概念 子类共享父类的数据和方法的行为,就叫继承. 二.E55如何实现继承?探索JavaScript继承的本质 2.1构造函数之 ...
- python中的继承有什么特点_Python中 什么是面向对象-继承和多态
文字有点长,对于不想看文字的朋友,可以去这里看视频,内容和这个文字一样的,视频可能更好理解 https://www.piqizhu.com/v/zaX9K4pd4GE 上一篇文章<python教 ...
- 回顾javaScript的面向对象继承
javaScript面向对象继承 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js的原型prototype机制或者用a ...
- Python学习笔记(十九)面向对象 - 继承
Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...
- 笔记整理3----Java语言高级(三)11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包修饰符
11 综合练习+12 面向对象-static变量 与 代码块+13 面向对象-继承与抽象类+14 面向对象-接口与多态+15 面向对象-包&修饰符 第11天 综合练习 今日内容介绍 综合练习 ...
最新文章
- TF-IDF模型的概率解释
- php mysql study_phpStudy 升级 MySQL5.7
- 1.PL/SQL Developer的快捷键
- 开启Windows8里面的Hyper-V虚拟机功能
- linux hadoop 本地,Linux系统下运行基于本地的Hadoop
- pytest 15 fixture之autouse=True
- xgboost之spark上运行-scala接口
- Android基于mAppWidget实现手绘地图(二)--概要
- 计算机二级指针,C语言——二级指针
- 批量刷新远程物化视图的方法(备用)
- Max OS X下关于JDK的那些事
- vi测试仪维修成功率高吗?_欧森杰检测仪:臭氧检测仪的六大特点,您真的了解吗?...
- 2020年书法落款_快来排排2020鼠年书法落款时间表,收!
- python从入门到精通-终于懂得python从入门到精通教程
- 尼奥智能陪伴机器人如何绑定设备_巴巴腾 智能陪护儿童机器人A3,为儿童专业定制的小伙伴...
- Windows内核结构
- steam用移动网不显示头像
- 作为面试官,我是如何甄别应聘者的包装程度
- 74HC245芯片简析
- 怎样才能让青少年培养起阅读习惯?听听猿辅导这四位嘉宾怎么说
热门文章
- java 偶数求和 数组_JAVA实现幻方
- python的pandas库内的函数_python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)...
- oracle 大页配置,ORACLE 启用大页内存
- linux 子系统 巡检,Linux 系统巡检
- git 在拉取代码的时候connect 谷歌报错_工具 | 手把手教你在VSCode中使用Git
- 杭州中国移动java待遇_【中国移动杭州研发中心Java面试】移动杭研社招java中级面试-看准网...
- hashmap中用红黑树不用其他树_HashMap面试专题:常问六题深入解析
- lampp mysql 等待响应时间很长,XAMPP 最大执行时间(max_execution_time) 问题
- qstringlist格式怎么写到txt_进阶能力 | 一招解决TXT电子书乱码问题
- spring-boot入门之二——验证、AOP日志、异常处理