• c# 第32节 类的继承


    本节内容:

    1:为什么要继承

    2:继承特点

    3:继承的实现

    4:子类传统构造,与base构造

    1:为什么要继承

    2:继承特点

    什么是继承:
    继承就是子类包含父类的数据结构和行为方式,
    包括字段、属性、方法
    
    在类的继承中:
    有父类和子类一组,还有基类与派生类一组的雅名。
    二者是一样的,只是叫法不同。
    
    继承的好处:
    1)提高了代码的重用性;
    2)提高程序设计的效率;
    3)为程序设计中的特别需要提供了编写代码的自由空间,
    从而提高了已有程序设计成果的可扩展性。

    3:继承的实现

    注意点:类的继承规则
    1:单根性  只能继承一个父类
    2:传递性(查看类图)  ####点击解决方案资源管理器,右键属性,查看类图
    3:派生类定义与基类同名的成员,则覆盖基类成员
    4:派生类自然继承基类成员,但不能继承基类的构造的成员,但是会默认的调用父类的无参构造函数。
    ############clerk类##################3
    class Clerk
        {
            private string _name;
    
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
    
            private int _age;
    
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }
            public void Csayhello() 
            {
                Console.WriteLine("我是{0},我{1}",this.Name,this.Age);
            }
            
            
    
    
    #####################sales类##################################
    class sales:Clerk //这样就有了父类的字段、属性、方法 但是父类的字段是private的不能访问 
        {
            private string _partment;
    
        public string Partment
        {
          get { return _partment; }
          set { _partment = value; }
        }
    
        public void Ssyahello() 
        {
            Console.WriteLine("我是{0},我{1}岁,我在{2}部门",this.Name,this.Age,this.Partment);
        }
            
        }
      
    #################technical 类###########################
    
    
    class technical:sales
    {
        private string _hobby;
    
        public string Partment
        {
            get { return _partment; }
            set { _partment = value; }
        }
    
    
        public string Hobby
        {
            get { return _hobby; }
            set { _hobby = value; }
        }
    
        public void Tsayhello() 
        {
            Console.WriteLine("我是{0},我{1}岁,我在{2}部门,我的喜爱{3}",this.Name,this.Age,this.Partment,this.Hobby);
        }  
        
        
    ############Main方法######################
        
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
    
    
    
    
        
    请求完整代码继承

    解释注意点3派生类定义与基类同名的成员,则覆盖基类成员

    解决办法:要想重写父类的字段,采用关键字new 

     

    总结:

    new关键字可以隐藏基类的属性或方法。

    以后一见到new关键字,就说明基类中有相同的方法或属性;

    解释注意点4:  子类不能继承基类的构造的成员

    在Main 方法进行实例化。  ///要记得在子类和父类中创建一个无参的构函数造

    namespace 继承
    {
        class Program
        {
            static void Main(string[] args)
            {
                Clerk zs = new Clerk("张三", 34);
                sales ws = new sales("王四", 34); //“继承.Clerk”不包含采用“0”个参数的构造函数,无法继承父类的构造
    
    
            }
        }
    }

    4:子类传统构造,与base构造

    5:封装类,禁止子类继承

     

    class test1:test //错误    继承.test1”: 无法从密封类型“继承.test”派生    
    {
    }
    
       sealed class test
    {
    }
  • 相关阅读:
    HDU4405(期望DP)
    hdu4165(简单递推,实则卡特兰数的应用)
    hdu4576(概率DP)
    期望DP(2013山东省赛)
    Nim游戏及其相关拓展
    nginx ubuntu环境下配置 path_info
    iOS 瀑布流的简单实现 UICollectionView
    ThPullRefresh (Swift 版)下拉上拉刷新
    用php搭建博客系统-待续
    面试收录-php面试题
  • 原文地址:https://www.cnblogs.com/hero799/p/8667443.html
Copyright © 2020-2023  润新知