面向对象 继承

继承:
一、什么是继承
概念:父亲有的东西,并且允许继承,所有孩子就都会有

一个父类可以拥有多个子类
一个子类只能拥有一个父类


二、父子之间的转换
子类可以转换成父类,这个父类只能转换成之前的子类

新建一个项目,再添加三个类,其中一个用作父类,另外两个用作子类;

父类:

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

namespace 继承
{
    class fu
    {
        //概念:父亲有的东西,并且允许继承,所有孩子就都会有
        // 一个父类可以拥有多个子类
        //一个子类只能拥有一个父类
        public void father() //在父类中写一个方法
        {
            Console.WriteLine("外奥卡木图北京");
        }

        private string _phone;//私有的成员变量,不可直接调用
        public string phone    //公开的,用来调用成员变量的方法
        {
            get{return _phone;}//取值,返回一个值
            set {_phone = value;}//把获取到的值给成员变量赋值
        }
    }
}

子类1:

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

namespace 继承
{
    class zi:fu //在子类中类名后面冒号加父类的类名,下面什么都不用写,就可以直接将父类中写的方法继承过来
    {
        public void dog() 
        {
            Console.WriteLine("萨摩狗头炫");
        }
    }
}

子类2:

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

namespace 继承
{
    class nv : fu //在子类中类名后面冒号加父类的类名,下面什么都不用写,就可以直接将父类中写的方法继承过来
    {
    }
}

项目:

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

namespace 继承
{
    class Program
    {
        static void Main(string[] args)
        {
            fu s = new fu();//实例化一下fu这个类,s
            s.father();//s直接点出这个类中的属性,显示出打印的那句话
            s.phone = "手机";//给父类中这个属性赋值

            zi ss = new zi();//实例化一下zi这个类,ss
            ss.father();//因为zi是fu这个类的子类,继承了fu的东西,所以,ss也可以直接点出父类中的属性

            ss.phone = "苹果";//给zi这个类中的phone属性添加赋一个值,和父类中方法完全继承,属性可以自己单独添加

            nv sss = new nv();//实例化一下nv这个类,sss
            ss.father();//因为nv是fu这个类的子类,继承了fu的东西,所以,sss也可以直接点出父类中的属性

            sss.phone = "三星";//给子类中属性赋值,子类与父类之间的方法是完全继承的,属性可以自己单独设置

            fu a = (fu)ss;//可以将子类转换为父类
            a.father();//转换后的子类可以直接点出父类中的属性,而无法点出子类原先的属性

            nv f = (nv)a;//转换为父类的子类无法再转换为其他子类,
            f.    //以此写法转换后点不出原先子类的属性

            zi b = (zi)a;//只可以将转换成父类的子类再转换回原来的子类
            b.dog();//转换回来的子类就可以点出原先属于自己的属性
            b.father();//以及父类中的属性

            

            zi c = (zi)s;//也可以将父类转换为子类
            c.dog();//转换为子类的父类可以直接点出子类中的属性及父类中的属性,因为子类对父类拥有继承
            Console.ReadLine();
        }
    }
}
【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/zyg316/p/5595493.html