C#(三、继承举例详解)
发布日期:2021-06-30 10:18:06 浏览次数:2 分类:技术文章

本文共 2495 字,大约阅读时间需要 8 分钟。

继 承 是 为 了 解 决 代 码 重 复 问 题 的 , 比 如 下 面 有 两 个 类 继承是为了解决代码重复问题的,比如下面有两个类 ,

class Dog{     public string Name { get; set; }    public void Shout() { Console.WriteLine(this.Name + ":汪汪"); }}class Cat{    public string Name { get; set; }    public void Shout() { Console.WriteLine(this.Name + ":喵喵"); }}

可 以 看 到 C a t 类 和 D o g 类 几 乎 一 致 , 但 是 我 们 还 是 得 完 整 的 写 下 来 可以看到Cat类和Dog类几乎一致,但是我们还是得完整的写下来 CatDog,

继承可以很好的解决这个问题,相同的部分继承过来就好了嘛!

class Animal    {        public string Name { get; set; }    }    class Dog:Animal    {         public void Shout() { Console.WriteLine(this.Name + ":汪汪"); }    }    class Cat:Animal    {        public void Shout() { Console.WriteLine(this.Name + ":喵喵"); }    }

可 以 看 到 在 D o g 和 C a t 后 面 加 上 : A n i m a l 表 示 继 承 可以看到在Dog和Cat后面加上:Animal表示继承 DogCat:Animal

此 时 , A n i m a l 叫 做 父 类 / 基 类 / 超 类 此时,Animal叫做\color{Red}父类/基类/超类 ,Animal//

C a t 和 D o g 叫 做 派 生 类 / 子 类 Cat和Dog叫做\color{Red}派生类/子类 CatDog/

要 点 一 、 C # 只 允 许 单 一 继 承 \color{Red}要点一、C\#只允许单一继承 C#

什 么 意 思 ? 意 思 是 D o g 后 面 只 能 继 承 一 个 父 类 什么意思?意思是Dog后面只能继承一个父类 ?Dog

比 如 现 在 D o g 后 面 继 承 的 是 A n i m a l , 那 就 不 能 再 接 其 他 的 了 比如现在Dog后面继承的是Animal,那就不能再接其他的了 DogAnimal,

要 实 现 多 继 承 , 需 要 使 用 接 口 这 个 概 念 . . . 下 一 篇 写 要实现多继承,需要使用接口这个概念...下一篇写 ,使...

问 题 一 、 想 从 父 类 继 承 私 有 属 性 , 怎 么 办 ? \color{Red}问题一、想从父类继承私有属性,怎么办? ,?

假 如 直 接 往 A n i m a l 里 面 写 个 p r i v a t e , 假如直接往Animal里面写个private, Animalprivate,

那 么 只 能 在 A n i m a l 这 个 类 里 面 访 问 , 根 本 达 不 到 继 承 的 目 的 呀 ! ! 那么只能在Animal这个类里面访问,根本达不到继承的目的呀!! Animal访,!!

protected关键字出现了,可以保证继承而不被外部访问

class Animal{    protected int beautiful { get; set; }//多添加的属性    public string Name { get; set; }}class Dog:Animal{    public Dog() { this.beautiful = 2; }//构造方法,初始化beautiful    public void Shout() { Console.WriteLine(this.Name + ":汪汪,美丽值是"+this.beautiful); }}

问 题 二 、 类 型 转 换 \color{Red}问题二、类型转换

在 m a i n 函 数 中 创 建 上 面 的 类 , 正 常 写 法 在main函数中创建上面的类,正常写法 main,

Dog now = new Dog() {Name = "小黑"};Console.WriteLine(now.Name);

使 用 类 型 转 换 使用类型转换 使

Animal now = new Dog() { Name = "小黑" };Console.WriteLine(now.Name);

上 面 的 实 质 是 把 D o g 转 化 成 了 A n i m a l 对 象 上面的实质是把Dog转化成了Animal对象 DogAnimal

所 以 D o g 独 有 的 s h o u t 方 法 没 了 , 但 N a m e 仍 然 可 以 访 问 所以Dog独有的shout方法没了,但Name仍然可以访问 Dogshout,Name访

这么转换类型有什么好处?详见下一讲<多态>

转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/107237965 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C. Jury Marks(map水题)
下一篇:A. The Meaningless Game(因子思维)

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月30日 23时39分07秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章