自己要有自信,相信自己可以找到好的工作。面对校招,企业更加看重自己的基础,这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();
二:工厂模式
我们把一些复杂的东西,放在一起通过一个工具或者一个方法来实现它,就相当于工厂一样我们可以做很多的事情,我们的代码就是可以放在工厂里面,这样就可以来实现具体的功能,外面不用管我是如何实现的,只需要调用工厂就可以。
案列: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(); }
这样做的好处是我们日后更好的维护项目。
多态的理解就到这里,这个还是需要在项目中去慢慢的学习理解。
一个长期的学习方法:
自己也要使用这个方法看以前做过的项目,看里面老大写的方法,是如何写的,如何用的。