C# 多态
2021-04-03 00:27
标签:实现 The 写代码 color 赚钱 over mon 构造函数 方法 说完了继承,说多态。 所谓多态,即为多样。很显然这个多态/多样不是生物学中的那个名词。不过还是可以往这上面靠靠。 在讲多态之前,让我们思考一下代码: emm 基本结论: 1 A,B两类都是继承NameList 2 A,B两类虽然继承NameList但是很少用到父类的方法。甚至还有写需要隐藏父类成员。 3 父类其实很限制子类 换句话说,其实AB类可能不需要父类的方法,有可能只是需要一个名字,父类的方法的实现子类并不需要,子类有自己的想法,有自己的做法。 ok,我们知道了这些东西,那么我们先其他放一放,先说个故事: 有一个爸爸和一个儿子, 爸爸有500万,和一个公司。 儿子都继承了下来,儿子很需要500万,但不满意公司的做法,甚至公司整体。 儿子有自己的想法,对公司进行改造。 (1)如果这个这个爸爸是一个没有远见的人,不在乎儿子怎么想,就那么直接将东西继承给儿子,儿子有可能很被动,因为有部分需要,有部分不需要,又不可能扔掉,或者选择视而不见,要么顶着压力改造。 (2)但如果这个爸爸是一个很有远见的人,很在在乎儿子,由爸爸可能会对他的资产进行整理,比如公司,也许儿子不喜欢,爸爸会对公司进行设置,告诉公司以后要听儿子的。但对钱很可能就不管了,因为儿子没有理由不喜欢是不是。 1,2很显然是两种结果,我们不妨用代码实现一下。 所以 ,我们要重新编写代码了【原有的代码实在是太杂乱了】 (1)结果一 儿子还是很强硬的,结果一的代码,我们基本全都能以现在的代码 但是第二种呢? 仔细思考一下,公司可以是听爸爸的,也可以听儿子,这取决于儿子是否想要对公司是否改造,或者直接接手。 如果改造爸爸还是高兴,毕竟爸爸同意了 我们现有的知识可以完成吗? 恐怕是不能的,虽然我们可以用new关键字来进行隐藏父类,但是这不符合爸爸高兴,这一要求啊。 那么怎么办呢? 来 先看代码: 有两个新东西: Virtual 和 override Virtual :虚拟化 override:重写 父类的方法体前加上virtual,意味着子类可以重写这个方法。 子类的方法前加上override,意味是子类重写父类的方法。 这些东西叫做重写 当你编写父类时,想某些方法可以在子类中重写,可以使用virtual,子类中重写使用override C# 多态 标签:实现 The 写代码 color 赚钱 over mon 构造函数 方法 原文地址:https://www.cnblogs.com/T-ARF/p/9211209.htmlclass 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
class Father
{
public int Money => 500;
public void Comany() => Console.WriteLine("公司年年都赚钱!!!!");
}
class Son : Father
{
public Son() => Console.WriteLine($"我继承了我爸的{Money}");
public new void Comany() => Console.WriteLine("我不是很喜欢我的我爸爸的公司");
}
class Father
{
public int Money => 500;
public virtual void Comany() => Console.WriteLine("公司年年都赚钱!!!!");
}
class Son : Father
{
public Son() => Console.WriteLine($"我继承了我爸的{Money}");
public override void Comany() => Console.WriteLine("我不是很喜欢我的我爸爸的公司");
}