继承

一个类可以继承自另一个类。在 C#中,类与类之间只存在单一继承。也就是说,一个类的直接基类只能有一个。当类与类之间实现继承的时候,子类可以将它的直接基类的所有成员当做自己的成员,除了类的静态构造方法、实例构造方法和析构方法。但是,虽然基类的所有成员都可以当做子类的成员,但是如果基类的成员设置了不同的访问权限,则派生类可以访问的成员也随之不同。C#的继承是可以传递的,如果类C从类B派生,而类B从类A派生,则类C将继类B的所有成员,也继承类A的所有成员(各个基类的静态构造方法、实例构造方法和析构方法除外)。子类(派生类)可以在继承的 基础上添加属于自己的成员,但是它不能移除继承来的父类(基类)的成员。析构方法的作用是销毁类的实例,后续的文章我会总结说明。
下面看代码实例:
using System;
namespace LycheeTest {
public class TV {
private int channel = 1; //电视机的频道
private int volume = 20; //电视机的音量
public static string model = "39 英寸液晶"; //型号
/// <summary>
/// 具体设置电视机的频道和音量,因为只提供给子类使用 /// 所以用 protected 访问权限关键字修饰
/// </summary>
/// <param name="ch">具体设置的频道数</param>/// <param name="vol">具体设置的音量值</param>
protected void Set(int ch, int vol) {
channel = ch;
volume = vol;
Console.WriteLine("设置完毕");
}
/// <summary>
/// 增加频道
/// </summary>
public void ChPlus() {
channel++;
}
/// <summary>
/// 增加音量
/// </summary>
public void VolPlus() {
volume++;
}
/// <summary>
/// 将信息显示在电视机屏幕上
/// </summary>
public void Show() {
Console.WriteLine("电视机型号是:{0}", model);
Console.WriteLine("频道:{0}", channel);
Console.WriteLine("音量:{0}", volume);
}
}
public class NewTV: TV {
public void PlayUDisk() {
this.Set(0, 30);
this.Show();
Console.WriteLine("现在开始播放 U 盘的视频文件......");
}
}
class Program {
static void Main(string[] args) {
NewTV myNewTV = new NewTV();
myNewTV.ChPlus();
myNewTV.VolPlus();
myNewTV.Show();
myNewTV.PlayUDisk();
Console.ReadKey();
}
}
}
上面这段代码中,第 3 行代码定义了基类 TV。它的静态字段和实例字段都有一个初始值设定项进行了字段的初始化。第 11 行代码添加了一个实例方法,它的访问修饰符为 protected。使用这个修饰符,只有本类的定义内部和它的派生类内部可以访问它。为什么要使用这个访问修饰符呢?因为这个方法不是给类的外部使用的。也就是说,它没有必要向用户公开。但是它的继承类又需要使用它,因此使用这个访问权限关键字可以保证一定程度的公开性,即定向公开,只为继承类开放。这个方法的作用是具体设置实例字段的值。让实例字段在模拟播放 U 盘的内容时,电视机的频道和音量能有一个特定值。除此之外,基类的其它方法没 有改动。第 37 行代码定义了一个子类,也就是派生类。它继承基类的语法就是在类名后加一个冒号,然后接一 个基类的类名称。第 38 行代码定义了一个方法,在这个方法中调用了基类的 Set 方法,并且为基类的方法传入了两个参 数,这两个参数确定了在播放 U 盘的内容时,电视机的频道为 0,音量为 30。注意当调用 Set 方法的时候, 使用了 this 关键字,它表示这个方法就是实例自己的,因为它是从基类继承下来的,相当于自己的财产。 然后又调用了基类的 Show 方法来再一次显示频道和音量的设置值。因此,类 TV 和类 NewTV 之间的关系可 以这么描述,类 TV 可以看做是一种电视机的原型机,类 NewTV 可以看做在这种原型机的基础上,电视机又 进行了升级,它添加了 U 盘播放的功能,而其它功能可以直接从原型机继承,而不必再重新进行设计。第 46 行代码定义了子类的实例,然后第 47 行、48 行和第 49 行直接调用了基类中定义的实例方法, 因为这些方法都已经继承下来,完全属于子类自己。第 50 行调用了子类定义的新添加的属于自己的方法。这段代码的执
行结果如下:
电视机型号是:39 英寸液晶 频道:2 音量:21 设置完毕 电视机型号是:39 英寸液晶 频道:0 音量:30 现在开始播放 U 盘的视频文件......
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# C#
# 类的继承
# 类继承
# C#中的类继承详解
# 深入理解C#之继承
# c# 继承快速入门
# 深入分析c# 继承
# c#继承中的函数调用实例
# C#中实现多继承的方法
# C#中事件的继承实例分析
# c#继承与多态使用示例
# C#之继承实现
# 子类
# 自己的
# 派生类
# 基础上
# 访问权限
# 这段
# 原型机
# 修饰符
# 视频文件
# 使用这个
# 进行了
# 也就是说
# 都有
# 是一种
# 我会
# 在这个
# 是从
# 本类
# 这两个
# 在这种
相关文章:
网站制作模板下载什么软件,ppt模板免费下载网站?
开源网站制作软件,开源网站什么意思?
高防服务器如何保障网站安全无虞?
如何用花生壳三步快速搭建专属网站?
如何基于云服务器快速搭建个人网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
招商网站制作流程,网站招商广告语?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
外贸公司网站制作哪家好,maersk船公司官网?
定制建站哪家更专业可靠?推荐榜单揭晓
油猴 教程,油猴搜脚本为什么会网页无法显示?
存储型VPS适合搭建中小型网站吗?
如何选择可靠的免备案建站服务器?
如何通过WDCP绑定主域名及创建子域名站点?
如何快速建站并高效导出源代码?
网站制作壁纸教程视频,电脑壁纸网站?
如何在IIS中配置站点IP、端口及主机头?
如何选购建站域名与空间?自助平台全解析
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
如何通过FTP空间快速搭建安全高效网站?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
代刷网站制作软件,别人代刷火车票靠谱吗?
,怎么用自己头像做动态表情包?
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何确保FTP站点访问权限与数据传输安全?
南平网站制作公司,2025年南平市事业单位报名时间?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何通过wdcp面板快速创建网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何用美橙互联一键搭建多站合一网站?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
微信小程序制作网站有哪些,微信小程序需要做网站吗?
如何获取开源自助建站系统免费下载链接?
如何在Windows 2008云服务器安全搭建网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
制作网站的软件免费下载,免费制作app哪个平台好?
,南京靠谱的征婚网站?
如何用IIS7快速搭建并优化网站站点?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
微信小程序 input输入框控件详解及实例(多种示例)
如何通过IIS搭建网站并配置访问权限?
无锡营销型网站制作公司,无锡网选车牌流程?
如何设置并定期更换建站之星安全管理员密码?
制作营销网站公司,淘特是干什么用的?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
如何在宝塔面板中创建新站点?
C#怎么创建控制台应用 C# Console App项目创建方法
中山网站推广排名,中山信息港登录入口?
*请认真填写需求信息,我们会在24小时内与您取得联系。