30天C#基础巩固-----多态,工厂模式

简介: 30天C#基础巩固-----多态,工厂模式

 自己要有自信,相信自己可以找到好的工作。面对校招,企业更加看重自己的基础,这30天就把C#的基础好好的复习,学习下。笔记一定要认真的记录,这样自己复习回顾的时候就有了可以参考的东西了。


一:多态


   在面向对象编程中不好理解的就是多态了,很多时候我们只是会使用,但是具体的知识点还不是很透彻,通过下面的示例来学习下多态。


  什么是多态:


      一个东西(类)在不同的场景下,展示的不同作用(多种状态)。


      对象在调用同一个方法的时候表示出多种状态。


这个可以使用父类和子类来更好的区别。<父类统一调用,子类具体实现>


class Person
{
    public void PersonInfo()
    {
        Console.WriteLine("首先,我是个人");
    }
}
class ManPerson : Person
{
    public  void PersonInfo()
    {
        Console.WriteLine("我是个男人");
    }
}
class WomenPerson : Person
{
    public  void PersonInfo()
    {
        Console.WriteLine("女人");
    }
}


定义了一个父类,两个子类。

static void Main(string[] args)
{
    ManPerson s =new ManPerson();  //定义一个男人。
    s.PersonInfo();                              //方法是男人。
    Person p = s;                              //赋值给了人。
    p.PersonInfo();                           //方法是人。
    Console.ReadKey();
}

这里我们可以看到当这个PersonInfo是那个类型的时候,就会调用那个方法。在不同的场景下,拥有不同的表示。


这里可以在子类中使用new来隐藏父类中的方法,当调用子类的方法时,方法是子类的,父类的被隐藏了。


之前讲解的是我们使用new来隐藏,下面是通过override和virtual来看我们的多态。

class Person
{
    public virtual void PersonInfo()
    {
        Console.WriteLine("首先,我是个人");
    }
}
class ManPerson : Person
{
    public override  void PersonInfo()
    {
        Console.WriteLine("我是个男人");
    }
}
class  WomenPerson : Person
{
    public override void PersonInfo()
    {
        Console.WriteLine("女人");
    }
}


virtual:表示我们父类的方法可以被子类重写。override:表示我们子类重写父类的方法。

Person p = null;              //定义一个人.
p=new ManPerson();      //利用子类实现不同的意义
  p.PersonInfo();              //统一调用父类的方法。
  Console.ReadKey();

679140-20160522095511435-833950735.png



二:工厂模式


   我们把一些复杂的东西,放在一起通过一个工具或者一个方法来实现它,就相当于工厂一样我们可以做很多的事情,我们的代码就是可以放在工厂里面,这样就可以来实现具体的功能,外面不用管我是如何实现的,只需要调用工厂就可以。


案列:USB设备,usb风扇,usb鼠标,通过类库和工厂来实现。


工厂:

/// <summary>
/// usb工厂,这里主要看用户填写的是几,来判断使用那个方法。
/// </summary>
public class UsbFactory
{
    public static UsbFac CreateInstance(string type)
    {
        switch (type)
        {
            case "1":return new Mouse();                    
            case "2":return new UsbF();
            default:
                return null;
        }
    }
}


usb父类:

public class UsbFac
{
    public virtual  void Insert()
    {
        Console.WriteLine("usb设备----");
    }
}

两个子类:


public class UsbF : UsbFac
{
    public override void Insert()
    {
        Console.WriteLine("usb----风扇转起来了");
    }
}
public class Mouse:UsbFac
{
    public override void Insert()
    {
        Console.WriteLine("usb-----鼠标用起来");
    }
}


main方法:

static void Main(string[] args)
{
    Console.WriteLine("请选择?");
    string type = Console.ReadLine();
    UsbFac s= UsbFactory.CreateInstance(type);
    if (s!=null)
    {
         s.Insert();
    }
    else
    {
        Console.WriteLine("不识别设备");
    }
    Console.ReadKey();
}


这样做的好处是我们日后更好的维护项目。


多态的理解就到这里,这个还是需要在项目中去慢慢的学习理解。


一个长期的学习方法:




679140-20160522095545076-1851688452.png


自己也要使用这个方法看以前做过的项目,看里面老大写的方法,是如何写的,如何用的。

目录
相关文章
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
317 65
|
设计模式 C#
C# 一分钟浅谈:工厂模式与抽象工厂模式
【10月更文挑战第10天】本文介绍了面向对象编程中的两种常见创建型设计模式:工厂模式和抽象工厂模式。工厂模式通过共同接口创建对象,隐藏创建逻辑,提高封装性和扩展性;抽象工厂模式则提供了一系列相关对象的创建接口,适用于多个相关产品族的创建。文章通过C#代码示例详细解释了这两种模式的实现和应用场景,并讨论了它们的优点、缺点及常见问题。
240 19
|
安全 C#
C# 面向对象编程的三大支柱:封装、继承与多态
【9月更文挑战第17天】在C#中,面向对象编程的三大支柱——封装、继承与多态,对于编写安全、可维护、可复用的代码至关重要。封装通过访问修饰符和属性保护数据;继承允许子类继承父类的属性和方法,实现代码复用和多态;多态则提高了代码的灵活性和通用性。掌握这三大概念能显著提升C#编程能力,优化开发效率和代码质量。
383 3
|
程序员 C#
C# 类实现接口(Interface) 多态 多继承
C# 类实现接口(Interface) 多态 多继承
C#之多态
C#之多态
132 0
【C#本质论 八】类-从设计的角度去认知(多态)
【C#本质论 八】类-从设计的角度去认知(多态)
218 0
|
C# 索引
【C#】【平时作业】习题-7-继承、抽象与多态
【C#】【平时作业】习题-7-继承、抽象与多态
292 0
【C#】【平时作业】习题-7-继承、抽象与多态
|
存储 数据可视化 安全
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
前言👻 方法❄️ C# 中定义方法 实例 C# 中调用方法 递归方法调用 参数传递 按值传递参数 按引用传递参数 按输出传递参数 C# 封装⛄️ Public 访问修饰符 Private 访问修饰符 Protected 访问修饰符 Internal 访问修饰符 Protected Internal 访问修饰符 C# 继承⚡️ 基类和派生类 基类的初始化 C# 多重继承 C# 多态性🎄 静态多态性 函数重载 C# 运算符重载 运算符重载的实现 可重载和不可重载运算符 动态多态性 总结💬
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
|
程序员 C#
C# 继承和多态
继承 继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。 当创建一个类时,程序员不需要完全重新编写新的数据成员和成员函数,只需要设计一个新的类,继承了已有的类的成员即可。这个已有的类被称为的基类,这个新的类被称为派生类。
224 0