[Day28]C# 鸡础观念- 物件导向(oop)~ 继承(Inheritance)

在人类中,基因肯定是世世代代在传承,
下一代除了接收了上一代的基因之外,
可能还会偷偷的进化,
C#中也是如此,
我们就来一探究竟C#演化的奥妙吧

继承概述/images/emoticon/emoticon35.gif

  • 继承的概念就如同生物学里面的,界门纲目科属种
  • 关系是一层一层继承下来的
  • 就如同脊椎动物的特徵都是,有脊椎,有体温,会呼吸,鸟类也有以上特徵,因此只需要去继承脊椎动物的特徵,并加上自己的特徵,有翅膀,会下蛋,鸡更属於他们的下层,因此鸡也可以继承以上的特徵,并且加上自己的特徵,有鸡冠,会咕咕叫
  • 如同上面条件脊椎动物,我们会把它称为基底类别(Base class)
  • 再来就是继承他的类别我们称之为衍生类别(Derived class)

小练习/images/emoticon/emoticon15.gif

1. 建立底类别

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{


    class Program
    {
        static void Main(string[] args)
        {
            vertebrate vertebrateClass = new vertebrate();
            //先个别印特徵
            Console.WriteLine("各别显示特徵");
            vertebrateClass.VertebrateFeature1();
            vertebrateClass.VertebrateFeature2();
            vertebrateClass.VertebrateFeature3();
            //一次全印
            Console.WriteLine();
            Console.WriteLine("一次列出所有特徵");
            vertebrateClass.ShowALLVertebrateFeature();
            Console.ReadKey();
        }
    }
    //脊椎动物类
    class vertebrate
    {
        //特徵1:会呼吸
        public void VertebrateFeature1()
        {
            Console.WriteLine("我会呼吸");
        }
        //特徵2:有脊椎
        public void VertebrateFeature2()
        {
            Console.WriteLine("我有脊椎");
        }
        //特徵3:有体温
        public void VertebrateFeature3()
        {
            Console.WriteLine("我有体温");
        }
        //显示所有特徵
        public void ShowALLVertebrateFeature()
        {
            VertebrateFeature1();
            VertebrateFeature2();
            VertebrateFeature3();
        }
    }
  }

结果:

各别显示特徵
我会呼吸
我有脊椎
我有体温

一次列出所有特徵
我会呼吸
我有脊椎
我有体温

2. 建立衍生类别~鸟类

  • 继承用法就是在新的衍生类别後面加上:基底类别
  • 如:class Birds: vertebrate
  • 这时他将会拥有上一个类别的所有特性
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{


    class Program
    {
        static void Main(string[] args)
        {
            //实例化鸟类
            Birds birdsClass = new Birds();
            //先个别印特徵
            Console.WriteLine("各别显示特徵");
            birdsClass.BirdsFeature1();
            birdsClass.BirdsFeature2();
            birdsClass.VertebrateFeature1();
            birdsClass.VertebrateFeature2();
            birdsClass.VertebrateFeature3();

            //一次全印
            Console.WriteLine();
            Console.WriteLine("一次列出所有特徵");
            birdsClass.ShowALLBirdsFeature();
            Console.ReadKey();
        }
    }
    //鸟类,并且继承脊椎动物类
    class Birds : vertebrate
    {
        //特徵1:会呼吸
        public void BirdsFeature1()
        {
            Console.WriteLine("我有翅膀");
        }
        //特徵2:有脊椎
        public void BirdsFeature2()
        {
            Console.WriteLine("我会下蛋");
        }
        //显示所有特徵
        public void ShowALLBirdsFeature()
        {
            //直接用脊椎动物类的全部显示方法
            ShowALLVertebrateFeature();
            BirdsFeature1();
            BirdsFeature2();
        }
    }
    //脊椎动物类
    class vertebrate
    {
        //特徵1:会呼吸
        public void VertebrateFeature1()
        {
            Console.WriteLine("我会呼吸");
        }
        //特徵2:有脊椎
        public void VertebrateFeature2()
        {
            Console.WriteLine("我有脊椎");
        }
        //特徵3:有体温
        public void VertebrateFeature3()
        {
            Console.WriteLine("我有体温");
        }
        //显示所有特徵
        public void ShowALLVertebrateFeature()
        {
            VertebrateFeature1();
            VertebrateFeature2();
            VertebrateFeature3();
        }
    }
  }

结果:

各别显示特徵
我有翅膀
我会下蛋
我会呼吸
我有脊椎
我有体温

一次列出所有特徵
我会呼吸
我有脊椎
我有体温
我有翅膀
我会下蛋

你会发现太神奇了吧,继承了别的类别,就能拥有它的功能,还可以自己增加新东西

我们来个课後练习吧/images/emoticon/emoticon07.gif

练习题:请继承上面鸟类来生出一只鸡

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化鸡类
            Chicken chickenClass = new Chicken();
            //先个别印特徵
            Console.WriteLine("各别显示特徵");
            chickenClass.ChickenFeature1();
            chickenClass.ChickenFeature2();
            chickenClass.BirdsFeature1();
            chickenClass.BirdsFeature2();
            chickenClass.VertebrateFeature1();
            chickenClass.VertebrateFeature2();
            chickenClass.VertebrateFeature3();

            //一次全印
            Console.WriteLine();
            Console.WriteLine("一次列出所有特徵");
            chickenClass.ShowALLChickenFeature();
            Console.ReadKey();
        }
    }
    //鸡类病继承鸟类
    class Chicken : Birds
    {
        //特徵1:会呼吸
        public void ChickenFeature1()
        {
            Console.WriteLine("我有有鸡冠");
        }
        //特徵2:有脊椎
        public void ChickenFeature2()
        {
            Console.WriteLine("我会咕咕叫");
        }
        //显示所有特徵
        public void ShowALLChickenFeature()
        {
            //直接用脊椎动物类的全部显示方法
            ShowALLBirdsFeature();
            ChickenFeature1();
            ChickenFeature2();
        }
    }

    //鸟类,并且继承脊椎动物类
    class Birds : vertebrate
    {
        //特徵1:会呼吸
        public void BirdsFeature1()
        {
            Console.WriteLine("我有翅膀");
        }
        //特徵2:有脊椎
        public void BirdsFeature2()
        {
            Console.WriteLine("我会下蛋");
        }
        //显示所有特徵
        public void ShowALLBirdsFeature()
        {
            //直接用脊椎动物类的全部显示方法
            ShowALLVertebrateFeature();
            BirdsFeature1();
            BirdsFeature2();
        }
    }
    //脊椎动物类
    class vertebrate
    {
        //特徵1:会呼吸
        public void VertebrateFeature1()
        {
            Console.WriteLine("我会呼吸");
        }
        //特徵2:有脊椎
        public void VertebrateFeature2()
        {
            Console.WriteLine("我有脊椎");
        }
        //特徵3:有体温
        public void VertebrateFeature3()
        {
            Console.WriteLine("我有体温");
        }
        //显示所有特徵
        public void ShowALLVertebrateFeature()
        {
            VertebrateFeature1();
            VertebrateFeature2();
            VertebrateFeature3();
        }
    }
  }

结果:

各别显示特徵
我有有鸡冠
我会咕咕叫
我有翅膀
我会下蛋
我会呼吸
我有脊椎
我有体温

一次列出所有特徵
我会呼吸
我有脊椎
我有体温
我有翅膀
我会下蛋
我有有鸡冠
我会咕咕叫

继承是物件导向语言的超强功能,要好好利用他,能更精简程序码,明天见喽


<<:  [Day29]What is the Probability?

>>:  第二十四天:使用 TeamCity 监看覆盖率变化

Day 2. Hashicorp Nomad: Upgrade

Hashicorp Nomad: Upgrade 升级方式: 现有主机更新binary档: 通常会建...

Day3 理解 golang slice 用法及原理 III

前两篇写了 slice 是什麽,以及创建 slice 的基本语法。 这篇就来写 slice 的参数传...

【Day01】JavaScript 是如何运行的

程序语言的运行过程 在知道如何运行之前,必须先了解程序语言是如何被运行的。 程序语言依照运行方式可分...

JavaScript Day02 - 变数(1)

变数(variable) Day04 - 变数(01):主要介绍变数的基本定义以及 var 的用法 ...

盘点清查与检测扫描 - 安全性检测

以一个月发一篇的速度,怕是还发完就关赛了... 适用人员: 技术人员。 适用法规: 资通安全责任等级...