C#编程(二十二)----------继承的类型

继承的类型

在面向对象的编程中,有两种截然不同的集成类型:实现继承和接口继承

实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数.在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码.在需要给现有的类型添加功能,或许=多相关的类型共享一组重要的公用功能时,这种类型的继承非常有用.

接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码.在需要指定该类型具有某些可用的特征时,最好使用这种类型的继承.

C#支持实现继承和接口继承.他们都内置于语言和框架中,因此可以根据应用程序的体系结构选择合适的继承.

一些语言是支持多继承的,即一个类派生自多个类.使用多重继承的优点是有争议的:一方面,可以使用多重继承编写发杂,但是紧凑的代码,另一方面,使用多重继承的代码常常很难理解和调试.

C#是不支持多重继承的,到那时C#允许类型派生于多个接口----多重接口继承.这说明C#可以派生自另一个类和任意多个接口.更准确的说,因为SYstem.Object是一个公共的基类,所以每个C#类(出类Object类之外)都有一个基类,还可以有人以多个基接口.

使用结构(值类型)的一个限制是不支持继承,单每个结构都可以派生自System.Valuetype实际上还应该更仔细一点:不能编码实现类型层次的机构,单结构可以实现接口.换句话说,结构不支持实现继承,但支持接口继承,事实上,定义结构和类可以总结为:

结构总是派生自System.ValueType,他们还可以派生自人一多个接口.

类总是派生自用户选择的另一个类,他们还可以派生自人一多个接口.

时间: 2024-09-28 16:13:17

C#编程(二十二)----------继承的类型的相关文章

Linux系统裁剪之二(Bash脚本编程之十二)

Linux系统裁剪之二(Bash脚本编程之十二) 系统函数库 ·Linux系统的启动流程     1,POST(加电自检) 计算机本身并不会执行程序,它只是一堆破铜烂铁,但是它可以在开机的时候先去载入一段程序,系统在刚刚启动的时候能够实现将某个ROM芯片中的程序映射到CPU能够寻址的地址空间中去,并且让CPU能够执行其中的指令,这些指令大部分都是用来做系统检测的,当检测完成后,如果系统中所有的基本硬件和核心硬件都没有问题的话,接下来就会根据BIOS中设定的系统启动次序(Boot Sequence

shell编程(十二)--- 添加用户示例

[[email protected] Learn]# cat useradd-final.sh  #!/bin/bash # DEBUG=0 ADD=0 DEL=0 help() { echo "Usage: $(basename $0) -v | --verbose | --add user1,user2,... | --del user1,user2,... | -h | --help" } while [ $# -ne 0 ] do case $1 in -h | --help 

对于未来编程的十二种预测

凝视水晶球,我们试图寻找未来五年中关于编程会发生什么,哪些会激动人心. 技术领域快速变革着,而用于构建这些技术的工具也随之不断发展.如果你不能超越当前的项目,那你就只能在兔子洞里越陷越深了. 为了帮助您呈现一个精彩的未来,我们预测了未来五年内编程领域将进行的颠覆性变革.由于我们的水晶球的主观色彩很浓,以下这些猜想也许并不是普遍适用的,还有一些或许在五年内不能完全实现.有些虽然已成为了现实,但真理的确立不是一蹴而就的. 亲爱的读者,请你快速阅读吧,因为未来将以超越我们认知的速度发展着. 1. GP

Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)

在数组的指定索引位置插入一个元素,可以调用数组的insert(atIndex:)方法: shoppingList.insert("Maple Syrup", atIndex: 0) // shoppingList now contains 7 items // "Maple Syrup" is now the first item in the list” 例子中的insert方法在数组的开始位置(索引为0)插入一个新的元素,元素的值是"Maple Syr

ActionScript3游戏中的图像编程(连载二十二,第2章开始)

第2章 初识图层样式与滤镜 无论是生物学家达尔文,还是哲学达人马克思,都无法准确解答“世界上先有鸡还是先有蛋”这一困扰了人类数百年的难题,但我可以百分之一百肯定地告诉大家,不管先有的是鸡还是蛋,它的创造者都一定是上帝.因为无中生有的本事,几乎都掌握在上帝的手上. 从这点上说,Photoshop和Flash都是上帝的化身,前者静得从容,后者动得洒脱,它们从不同的角度诠释着计算机时代的艺术. 您可以认为Photoshop创造了蛋,Flash创造了鸡,它们两者并不冲突. 既然如此,世界上到底是先有鸡还

Windows界面编程第十二篇 位图显示特效 飞入效果与伸展效果

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 转载请标明出处,原文地址:http://blog.csdn.net/morewindows/article/details/8696726 欢迎关注微博:http://weibo.com/MoreWindows Windows界面编程之位图显示特效系列目录: 1. <Windows界面编程第九篇位图显示特效交错效果> http:/

QT开发(二十二)——QMainWindow主窗口

QT开发(二十二)--QMainWindow主窗口 一.主窗口简介 应用程序中的主窗口是与用户进行长时间交互的顶层窗口,提供了应用程序的大部分功能,通常是应用程序启动后的第一个窗口,应用程序一般由一个主窗口和多个对话框组成. QT中直接支持主窗口,QMainWindow是QT中主窗口的基类,是继承于QWidget类的容器型组件. QMainWindow内部封装了菜单栏.工具栏.中心组件.停靠组件.状态栏等. QMainWindow内置了布局管理器,基本的组件布局如下: 二.菜单栏 QT中提供了预

《Programming in Lua 3》读书笔记(二十二)

日期:2014.8.6 PartⅣ The C API 26 Extending Your Application 使用Lua很重要的一点是用来做配置语言.配合主语言做一些功能的配置. 26.1 The Basics 有的时候程序需要配置一些功能信息,很多时候可能有许多别的方法比用lua做配置要更简单:如使用环境变量或者读取文件,读取文件涉及到文件的解析.如果使用Lua进行配置的话,相当于用lua文件替代了要读取的如csv.txt文件等. 使用Lua进行配置的时候,就需要使用Lua API去控制

企业搜索引擎开发之连接器connector(二十二)

下面来分析线程执行类,线程池ThreadPool类 对该类的理解需要对java的线程池比较熟悉 该类引用了一个内部类 /** * The lazily constructed LazyThreadPool instance. */ private LazyThreadPool lazyThreadPool; 该成员实现了单例模式,即该对象只有一个实例,属于懒汉式单例模式,当实例化该成员时,启用了线程同步机制 /** * Shut down the {@link ThreadPool}. Afte

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob