zoukankan      html  css  js  c++  java
  • 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
    {
    }
  • 相关阅读:
    [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的元素
    [LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
    [LeetCode] 146. LRU Cache 近期最少使用缓存
    [LeetCode] 381. Insert Delete GetRandom O(1)
    [LeetCode] 380. Insert Delete GetRandom O(1) 插入删除获得随机数O(1)时间
    [LeetCode] 57. Insert Interval 插入区间
    [LeetCode] 56. Merge Intervals 合并区间
    [LeetCode] 155. Min Stack 最小栈
    移动web开发-------meta
    font-family
  • 原文地址:https://www.cnblogs.com/hero799/p/8667443.html
Copyright © 2011-2022 走看看