当前位置: 首页 > news >正文

茂名市建设银行网站wordpress数据库介绍

茂名市建设银行网站,wordpress数据库介绍,html5网站制作教程,新开传奇网站封装、继承、多态#xff0c;面向对象的三大特性#xff0c;前两项理解相对容易#xff0c;但要理解多态#xff0c;特别是深入的了解#xff0c;对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践#xff0c;封装、继承在实际工作中的应用随…封装、继承、多态面向对象的三大特性前两项理解相对容易但要理解多态特别是深入的了解对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践封装、继承在实际工作中的应用随处可见但多态呢也许未必可能不经意间用到也不会把它跟“多态”这个词对应起来。在此抛砖引玉大家讨论个人能力有限不足之处还请指正。        之前看到过类似的问题如果面试时主考官要求你用一句话来描述多态尽可能的精炼你会怎么回答当然答案有很多每个人的理解和表达不尽相同但我比较趋向这样描述通过继承实现的不同对象调用相同的方法表现出不同的行为称之为多态。   例1 代码 public class Animal    {        public virtual void Eat()        {            Console.WriteLine(Animal eat);        }    }    public class Cat : Animal    {        public override void Eat()        {            Console.WriteLine(Cat eat);        }    }    public class Dog : Animal    {        public override void Eat()        {            Console.WriteLine(Dog eat);        }    }    class Tester    {        static void Main(string[] args)        {            Animal[] animals  new Animal[3];            animals[0]  new Animal();            animals[1]  new Cat();            animals[2]  new Dog();            for (int i  0; i  3; i)            {                animals[i].Eat();            }        }    }        输出如下 Animal eat... Cat eat... Dog eat...   在上面的例子中通过继承使得Animal对象数组中的不同的对象在调用Eat()方法时表现出了不同的行为。 多态的实现看起来很简单要完全理解及灵活的运用c#的多态机制也不是一件容易的事有很多需要注意的地方。   1. new的用法 先看下面的例子。 例2   代码 public class Animal    {        public virtual void Eat()        {            Console.WriteLine(Animal eat);        }    }    public class Cat : Animal    {        public new void Eat()        {            Console.WriteLine(Cat eat);        }    }    class Tester    {        static void Main(string[] args)        {            Animal a  new Animal();            a.Eat();            Animal ac  new Cat();            ac.Eat();            Cat c  new Cat();            c.Eat();        }    }   运行结果为 Animal eat... Animal eat... Cat eat...   可以看出当派生类Cat的Eat()方法使用new修饰时Cat的对象转换为Animal对象后调用的是Animal类中的Eat()方法。其实可以理解为使用new关键字后使得Cat中的Eat()方法和Animal中的Eat()方法成为毫不相关的两个方法只是它们的名字碰巧相同而已。所以 Animal类中的Eat()方法不管用还是不用virtual修饰也不管访问权限如何或者是没有都不会对Cat的Eat()方法产生什么影响只是因为使用了new关键字如果Cat类没用从Animal类继承Eat()方法编译器会输出警告。   我想这是设计者有意这么设计的因为有时候我们就是要达到这种效果。严格的说不能说通过使用new来实现多态只能说在某些特定的时候碰巧实现了多态的效果。     2.override实现多态 真正的多态使用override来实现的。回过去看前面的例1在基类Animal中将方法Eat()用virtual标记为虚拟方法再在派生类Cat和Dog中用override对Eat()修饰进行重写很简单就实现了多态。需要注意的是要对一个类中一个方法用override修饰该类必须从父类中继承了一个对应的用virtual修饰的虚拟方法否则编译器将报错。   好像讲得差不多了还有一个问题不知道你想没有。就是多层继承中又是怎样实现多态的。比如类A是基类有一个虚拟方法method()virtual修饰类B继承自类A并对method()进行重写override修饰现在类C又继承自类B是不是可以继续对method()进行重写并实现多态呢看下面的例子。   例3:   代码 public class Animal    {        public virtual void Eat()        {            Console.WriteLine(Animal eat);        }    }    public class Dog : Animal    {        public override void Eat()        {            Console.WriteLine(Dog eat);        }    }    public class WolfDog : Dog    {        public override void Eat()        {            Console.WriteLine(WolfDog eat);        }    }    class Tester    {        static void Main(string[] args)        {            Animal[] animals  new Animal[3];            animals[0]  new Animal();            animals[1]  new Dog();            animals[2]  new WolfDog();            for (int i  0; i  3; i)            {                animals[i].Eat();            }        }}        运行结果为 Animal eat... Dog eat... WolfDog eat...  在上面的例子中类Dog继承自类Animal对方法Eat()进行了重写类WolfDog又继承自Dog再一次对Eat()方法进行了重写并很好地实现了多态。不管继承了多少层都可以在子类中对父类中已经重写的方法继续进行重写即如果父类方法用override修饰如果子类继承了该方法也可以用override修饰多层继承中的多态就是这样实现的。要想终止这种重写只需重写方法时用sealed关键字进行修饰即可。     3. abstract-override实现多态 先在我们在来讨论一下用abstract修饰的抽象方法。抽象方法只是对方法进行了定义而没有实现如果一个类包含了抽象方法那么该类也必须用abstract声明为抽象类一个抽象类是不能被实例化的。对于类中的抽象方法可以再其派生类中用override进行重写如果不重写其派生类也要被声明为抽象类。看下面的例子。 例4       代码 public abstract class Animal    { public abstract void Eat();    }    public class Cat : Animal    {        public override void Eat()        {            Console.WriteLine(Cat eat);        }    }    public class Dog : Animal    {        public override void Eat()        {            Console.WriteLine(Dog eat);        }    }    public class WolfDog : Dog    {        public override void Eat()        {            Console.WriteLine(Wolfdog eat);        }    }    class Tester    {        static void Main(string[] args)        {            Animal[] animals  new Animal[3];            animals[0]  new Cat();            animals[1]  new Dog();            animals[2]  new WolfDog();            for (int i  0; i  animals.Length; i)            {                animals[i].Eat();            }        }    }     运行结果为 Cat eat... Dog eat... Wolfdog eat... 从上面可以看出通过使用abstract-override可以和virtual-override一样地实现多态包括多层继承也是一样的。不同之处在于包含虚拟方法的类可以被实例化而包含抽象方法的类不能被实例化。 以上就是我对c#中多态的一些浅薄的认识如有错误的地方欢迎批评指正转载于:https://www.cnblogs.com/Areas/archive/2012/12/05/2803784.html
http://www.pierceye.com/news/361460/

相关文章:

  • 制定网站推广方案网络营销网站分析
  • 商城网站系网站 png逐行交错
  • 陕西网站建设陕icp备免费虚拟机安卓
  • 优化教程网站推广排名东莞网站建设推广有哪些
  • 金阳建设集团网站电子商务系统 网站建设
  • 网站建设规模哪里有做app软件开发
  • 建站工具上市手机视频网站设计
  • 代做道具网站做地方门户网站不备案可以吗
  • 电子商务 网站前台功能想做微商怎么找厂家
  • 网站建设电子书做网站引入字体
  • 顺德建设网站公司分发平台
  • 个人门户网站模板下载婚纱摄影网站定制
  • 提高网站流量的软文案例手机腾讯网
  • 网站只做内容 不做外链深圳宝安区天气
  • 生物网站 template淘宝的网站建设怎么建
  • 苏州哪家做网站好些推广之家app
  • 网站开发计入管理费用哪个明细对网站建设的调研报告
  • 南头专业的网站建设公司wordpress数据量大网站访问
  • 龙华民治网站建设公司wordpress设置vip
  • 网站建设天猫店免费主机空间
  • 帮网贷做网站会判刑吗学it要多久多少学费
  • 陕西网站建设维护erp软件怎么安装
  • 沈阳网站建设简维软件工程在网站建设
  • 万维网网站续费云南建设厅网站执业注册
  • 判断网站首页民宿设计网站大全
  • .net如何建设网站做影视会员网站
  • 织梦网站安全免费咨询医生皮肤科专家
  • dw做网站背景图片设置网站建设设计作品怎么写
  • 网站建设推广专员岗位职责济南做企业网站公司
  • 网站不备案能解析吗合肥网站推广 公司哪家好