C# 继承
2023-09-14 09:03:15 时间
在继承一个基类时,成员(属性、方法)的可访问性就成了一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。
只有派生类才能访问基类的protected成员。对于外部代码来说,这个可访问性与私有成员一样:外部代码不能访问private成员和protected成员。
基类的成员可以是虚拟(Virtual)的,也就是说,成员可以由继承它的类重写。派生类可以提供成员的其他实现
C++中的继承 学习C++中的继承,包括继承的基础知识,加上继承与友元、继承与静态成员、多继承情况等等,了解什么是菱形继承?菱形继承的问题是什么?了解什么是菱形虚拟继承?如何解决数据冗余和二义性的?了解继承和组合的区别?什么时候用继承?什么时候用组合?
在继承一个基类时,成员(属性、方法)的可访问性就成了一个重要的问题。派生类不能访问基类的私有成员,但可以访问其公共成员。
只有派生类才能访问基类的protected成员。对于外部代码来说,这个可访问性与私有成员一样:外部代码不能访问private成员和protected成员。
基类的成员可以是虚拟(Virtual)的,也就是说,成员可以由继承它的类重写。派生类可以提供成员的其他实现代码。这种实现代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问它们。如果没有提供其他实现方式,通过派生类使用成员的外部代码就自动访问基类中成员的实现代码。
虚拟成员不能是私有成员,因为这样会自相矛盾--不能说成员可以由派生类重写,同时派生类又不能访问它。
基类还可以定义为抽象类。抽象类不能直接实例化。要使用抽象类,必须继承这个类,抽象类可以有抽象成员,这些成员在基类中没有实现代码,这些实现代码必须在派生类中提供。
当然,抽象基类可以提供成员的实现代码,这是很常见的。不能实例化抽象类,并不意味着不能在抽象类中封装功能。
最后,类可以是密封(seal)的。密封的类不能用作基类,所以没有派生类。
小注:
重写(Override):指在继承关系中,在派生类中重写由基类继承来的方法,这时基类和派生类中就有两个同名的方法,系统会根据对象的实际类型调用相应版本的方法。
C++中的继承 学习C++中的继承,包括继承的基础知识,加上继承与友元、继承与静态成员、多继承情况等等,了解什么是菱形继承?菱形继承的问题是什么?了解什么是菱形虚拟继承?如何解决数据冗余和二义性的?了解继承和组合的区别?什么时候用继承?什么时候用组合?
相关文章
- c# Response.ContentType类型汇总
- C#设计原则——迪米特原则
- 《CLR via C#》笔记:第4部分 核心机制(3)
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- c#封装动态库_nginx调用so动态库
- 什么是继承?C# 支持多重继承吗?C#如何实现多重继承?
- C#Winform禁止用户调整ListView的列宽
- C#数组学习相关资料整理
- C#IP地址与整数之间转换的具体方法
- C#中的FileUpload选择后的预览效果具体实现
- C#删除文件夹和文件到回收站示例
- C#Page用于各页面继承功能实例
- C#运用FileInfo类实现拷贝文件的方法
- C#定时器实现自动执行的方法
- 教你如何用C#制作文字转换成声音程序