码迷,mamicode.com
首页 > Windows程序 > 详细

C# 继承(4)

时间:2018-06-21 13:37:01      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:一个   类的方法   com   子类   关键字   必须   泛型方法   img   where   

接上章:

 class NameList
    {
        public NameList() => Console.WriteLine("这个是NameList的构造函数");

        public NameList(string Name) => Console.WriteLine($"这个是NameList的重载构造函数,输入的参数是{Name}");

        ~NameList() => Debug.WriteLine("释放NameList");

        public string Name { get; set; }

        public void ID() => Console.WriteLine($"我的id是{Name}");
    }


    class A : NameList
    {

        public A() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public A(string Name) : base(Name) =>Console.WriteLine($"这个是A的重载构造函数,输入的参数是{Name}");

        ~A() => Debug.WriteLine("释放A");
    }
    class B : NameList
    {

        public B() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public B(string Name) => Console.WriteLine($"这个是B的重载构造函数,输入的参数是{Name}");

        ~B() => Debug.WriteLine("释放B");

    }

 

这一章 我们来说说 继承的方法和方法隐藏。

我们来修改代码:

这个代码比较尬,主要是演示子类中的方法使用父类的方法。

A类的ShowType方法使用NameList的Show<T>(T type)方法。

class NameList
    {
        public NameList() => Console.WriteLine("这个是NameList的构造函数");

        public NameList(string Name) => Console.WriteLine($"这个是NameList的重载构造函数,输入的参数是{Name}");

        ~NameList() => Debug.WriteLine("释放NameList");

        public string Name { get; set; }

        public void ID() => Console.WriteLine($"我的id是{Name}");

        public void Show<T>(T type) where T : NameList => Console.WriteLine(type.GetType().FullName);//泛型方法
    }


    class A : NameList
    {

        public A() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public A(string Name) : base(Name) =>Console.WriteLine($"这个是A的重载构造函数,输入的参数是{Name}");

        ~A() => Debug.WriteLine("释放A");

        public void ShowType() => base.Show<A>(this);
    }
    class B : NameList
    {

        public B() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public B(string Name) => Console.WriteLine($"这个是B的重载构造函数,输入的参数是{Name}");

        ~B() => Debug.WriteLine("释放B");

        
        
    }

实例化代码:

   new A().ShowType();

结果

技术分享图片

 

上述代码主要是说子类调用父类的方法,使用Base关键字。当然父类的方法必须是公共的方法。

 

上面的代码还是比较尬的,赶紧进入下一个环节 继承的隐藏方法

我们先修改代码:

在A类中添加一个名为ID的方法。此时A类有自己的ID方法和继承NameList的ID方法。

 class NameList
    {
        public NameList() => Console.WriteLine("这个是NameList的构造函数");

        public NameList(string Name) => Console.WriteLine($"这个是NameList的重载构造函数,输入的参数是{Name}");

        ~NameList() => Debug.WriteLine("释放NameList");

        public string Name { get; set; }

        public void ID() => Console.WriteLine($"我的id是{Name}");

        public void Show<T>(T type) where T : NameList => Console.WriteLine(type.GetType().FullName);
    }


    class A : NameList
    {

        public A() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public A(string Name) : base(Name) =>Console.WriteLine($"这个是A的重载构造函数,输入的参数是{Name}");

        ~A() => Debug.WriteLine("释放A");

        public void ShowType() => base.Show<A>(this);

        public void ID() => Console.WriteLine("这个ID方法是A类");
    }
    class B : NameList
    {

        public B() : base() => Console.WriteLine("这是A类的初始化,也就是构造函数");

        public B(string Name) => Console.WriteLine($"这个是B的重载构造函数,输入的参数是{Name}");

        ~B() => Debug.WriteLine("释放B");

        
        
    }

 实例化:

new A().ID();

 

结果

技术分享图片

结果是使用的A类专属的ID方法,不再使用继承的ID方法。

但是看代码

技术分享图片

 会提示报错,为什么?

因为子类的方法和父类的方法是相同。有可能会报错。

C# 继承(4)

标签:一个   类的方法   com   子类   关键字   必须   泛型方法   img   where   

原文地址:https://www.cnblogs.com/T-ARF/p/9208339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!