标签:一个 类的方法 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方法。
但是看代码
会提示报错,为什么?
因为子类的方法和父类的方法是相同。有可能会报错。
标签:一个 类的方法 com 子类 关键字 必须 泛型方法 img where
原文地址:https://www.cnblogs.com/T-ARF/p/9208339.html