(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
    */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1天 注释的应用 第2天 02_+号的应用 03变量的使用 C中的转义符 05交换量变量 07接收用户的信息 04个练习 06占位符 第3天 04逻辑运算符 05if结构 06习题 03bool型 02Convert字符转换练习 01Convert字符装换 用户登录 第3天 Net第三天取余 第4天 01异常捕获 02练习 02异常捕获 03switch-case 04while循环 06练习 07while练习与do--while 08for 循环 12continue 09乘法口诀练习 10型转换和方法转换 11tryparse练习 13三元表达式 第5天 00随机数 05数组 06数组的运用 06数组的运用:冒泡程序 07方法 01枚举 04结构 02枚举和int以及sting型之间的转换 03枚举练习 第6天 01方法调用 判断是否为整数 yes或no 02方法练习求数组的和 03方法 out参数求数组的和 04 out参数练习 05 out练习 06 ref参数 07 ref 参数练习 08 params 可变参数 09方法的重载 10方法的递归 11方法练习 第7天 01面向对象 02 属性 03练习 第7天 01复习 02方法的调用问题 03判断闰年 04方法概念 05方法练习 06方法的3个练习 07out参数 08使用out参数做登陆 09自己动手写tryparse 10ref参数 11、ref练习 12params可变参数 13、方法的重载 14、方法的递归 15方法练习 第8天 01面向对象复习 02命名空间 03字符串的高级用法 04字符串练习 05继承 Driver Person Program Student Teacher 06继承的练习 第9天 00里氏转换 01里氏转换 M1 M2 M3 M4 person Program 02protected ArrayList集合 ArrayList集合练习 第10天 03_List泛型集合 04_Dictionary 05泛型集合练习 06文件流 FileStream 07StreamReader和StreamWriter 02 file 01 path。File.ReadAllBytes 第11天 02 抽象 Animal Cat Dog Program 02-抽象 Animal Program 03抽象练习 04复习 06接口 05设计模式 06序列化 07partial部分 08sealed密封 01面向对象-多态 第12天 01接口 02接口的特点 03接口练习 03解决接口与方法重名问题 04收银系统 Banana BuDaZhe CangKu ....... 第13天 01第12天_接口 第14天 01MDI窗体设计 02PictureBox实现图片切换 03PictureBox和timer练习 第14天 MD5加密 03WindowsForms练习 05timer跑马灯练习 06timer闹钟练习不是完整的 08单选和多选练习 01MD5加密 04textBox控件显示输入的文本 02windows控件弹出窗体练习 07简单记事本应用 第15天 01浏览器控件 02下拉框日期选择器 02日期选择器控件 03双击播放音乐 04对话框练习 第16天 01播放音乐 01打开文件双击播放音乐 02线程 03线程执行带参数的方法-摇奖机 04创建服务端Socket(未实现) 04客户端的Socket(未实现) 05创建服务端的Socket 05创建客户端的Socket ConsoleApp1 第17天 02Command操作数据 03DataReader读取数据 04DataSet数据集 05DataAdapter数据适配 01第17天Connection数据库打开关闭 第18天 01DataGridView-表格数据控件 02DataGridView隐藏行列 03 DataGridView直接修改数据 04DataGridView当前行显示不同颜色 05分页 第19天 01进程 02进程 03FileStream文件流 03复制文件 03正则表达式 04正则表达式下载页面图片(未实现) 第20天 01创建XML文档 02对xml文档增删改查 03.2判断是否登录成功原版 03判断是否登录成功 04Xml增删改查 05Xml增删改查(更改的) 第21天 01为什么会有委托 02泛型委托 03多播委托 04使用委托进行窗体传值 05事件 06事件 07程序集的引用 07Common 08反射的常用函数 09用反射制作计算器 第22天 01 SqlConnection 数据库 02ConnectionStringBvilderDemo字符串创建器 03ConfigDemo 配置文件配置连接字符串 05UserDemon 04UserDemo 06DataImporting数据导入 07DataReader读取数据 第23天 第23天UserDemon用户登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值