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
{
}

 

posted @ 2018-03-29 00:46  你是我的神奇  阅读(226)  评论(0编辑  收藏  举报