(21)C# 基础—— 面向对象之继承

继承概述

继承是面向对象编程最重要的特性之一。任何类都可以从另外一个类继承,也就是说,这个类拥有它继承的类的所有成员。在面向对象编程中,被继承的类被称为父类或者基类,这个类被称为子类或者派生类。C#中提供了类的继承机制,单只支持单继承,不支持多继承,即在C#中一次值允许继承一个类,不能同时继承多个类。

继承一个类时,类成员的可访问性很重要。派生类不能访问基类的私有成员,但是可以访问公共成员。所以,被继承的类最好是用protected修饰。

除了成员的保护级别外,还可以为成员定义继承行为。基类的成员可以使虚拟的(virtual),成员可以由派生类重写。派生类可以提供成员的其他执行代码,这种执行代码不会删除、原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问他们。如果没有提供其他执行方式,外部代码将直接访问基类中的成员的执行代码,意思如果没有重写,就去访问基类中定义的方法。

Tips:后续章节会讲到抽象类 抽象方法 虚方法等知识点。

继承的实现

语法如下:

    class DrrivedClass:BaseCalss{}//继承类时,必须在子类和基类间用冒号(:)

例子程序:

    class Myclass1
    {
        private int x = 0;
        private int y = 0;
        public int X
        {
            get{return x;}
            set{x=value;}
        }
        public int Y
        {
            get{return y;}
            set{y=value;}
        }
        public int Add1()
        {
            return X + Y;
        }
    }
    class Mycalss2 : Mycalss1
    {
        private int z = 0;
        public int Z
        {
            get{return z;}
            set{z = value;}
        }
        public int Add2()
        {
            return X + Y + Z;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Myclass1 class1 = new Myclass1();
            Myclass2 class2 = new Myclass2();
            class1.X = 3;
            class1.Y = 5;
            class2.X = 3;
            class2.Y = 5;
            class2.Z = 7;
            Console.WriteLine(class1.Add1());
            Console.WriteLine(class2.Add1());
            Console.WriteLine(calss2.Add2());
        }
    }

运行结果为;
8
8
15

单继承的使用

单继承一般用于类之间的继承,C#中的类只支持单继承。实现单继承时,使用 “子类 : 基类”的格式。
例子程序:定义一个类,在类中定义一个虚方法,计算两个数的和。让Program类继承第一个类,重写虚方法,计算三个数的和。

    class MyClass
    {
        public virtual int Add(int x,int y)
        {
            return x + y;
        }
    }
    class Program : MyClass
    {
        private int z = 0;
        public int Z
        {
            get {return z;}
            set{z=value;}
        }
        public override int Add(int x,int y)
        {
            return base.Add(x,y) + this.Z;
        }
        static void Main(string[] args)
        {
            Program pro = new Program();
            pro.Z = 8;
            Console.WriteLine(pro.Add(3,5));
        }
    }
    /*
    output:
    16
    */

多继承的使用

如果使用多继承,需要使用接口(后续章节会讲),因为C#中的类只支持单继承,而接口支持多重继承。实现多重继承时,继承的多个接口间用逗号(,)隔开。被继承的类一定是在前面,被继承的多个接口一定是在后面。

例子程序:

    interface IPeople
    {
        string Name{get;set;}//属性:姓名
        string Sex{get;set;}//属性:性别
    }
    class MyCalss
    {
        public void Show()
        {
            Console.WriteLine("人的信息:");
        }
    }
    class Program:MyClass,IPeople
    {
        string name = "";
        string sex = "";
        public string Name
        {
            get{retrun name;}
            set{name=value;}
        }
        public string Sex
        {
            get{return sex;}
            set{sex=value;}
        }
        static void Main(string[] args)
        {
            Program pro = new Program();
            IPeople ipeo = pro;
            ipeo.Name="Bob";
            ipeo.Sex="Man";
            pro.Show();
            Console.WriteLine(ipeo.Name + "  "+ipeo.Sex);
        }
    }
    /*output:
    人的信息:
    Bob  Man
    */

猜你喜欢

转载自blog.csdn.net/qq_39003429/article/details/81981173
今日推荐