• 面向对象 继承


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

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


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

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

    父类:

    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();
            }
        }
    }
  • 相关阅读:
    (6)Lua 模块与包
    (3)Lua 迭代器与迭代函数
    (二)miller指导查看主控板寄存器操作
    (一)mtg3000常见操作
    (三)NAND flash和NOR flash的区别详解
    (八)shell中的循环结构
    (七)shell编程学习
    (六)动手写第一个shell
    (五)uboot移植补基础之shell
    (四)ubuntu学习前传—uboot中对Flash和DDR的管理
  • 原文地址:https://www.cnblogs.com/zyg316/p/5595493.html
Copyright © 2020-2023  润新知