面向对象的关键技术(多态、接口、抽象)
2012-03-24 11:27
417 查看
对于一些C#的初学者,类似于面向对象中的多态、接口、抽象、不是能很好的理解,本帖只针对一些初学者对这几个概念不是很理解的人看,
牛人请绕道额就不要浪费时间了哈!我一个一个来就举一些简单易懂的例子!
多态
直接上例子:
运行结果:
总结:思想是,从基类中派生出三个类,在这三个类中重载基类的方法,然后重新调用派生类中的方法。因为每一次重载的功能都不一样,所以就实现了多态!
接口
还是用一个例子来说明:
运行结果:
总结:接口的本质就是一些方法!但是要使用这些方法必须要按照一定的规则,否则就不能使用。定义接口,其实质就是定义规则,要使用接口,必须在它的规则下进行!
抽象
抽象类和接口有一些相似之处,它们都包含由派生类继承的成员,接口和抽象类都不能直接实例化!(虚的东西你怎么能拿来使用呢对吧?必须要使用第三方的东西来搭桥)
运行结果:
总结:抽象类可以拥有抽象成员,但是不能直接被实例化,并且没有代码体,它的执行方法是在其派生类中实现的!注意,只要这个类中有一个方法定义为抽象方法,那么这个类必须定义为抽象类!
以上只是我个人的一些小的学习感悟!希望能帮到那些需要帮到的人!
作者:李正兴 英文名:black_li
出处:http://www.cnblogs.com/longteng1991/
如果,您喜欢这篇文章的话,您可以分享给您的好友,请点击按钮【推荐】。
如果,您想更快的阅读我的最新文章,您可以关注我,请点击按钮【关注】。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
牛人请绕道额就不要浪费时间了哈!我一个一个来就举一些简单易懂的例子!
多态
直接上例子:
using System;//包含基本类和基类 using System.Collections.Generic;//定义泛型集合的接口和类 using System.Linq;//支持语言集成查询 using System.Text;//包含用于字符编码等功能的对象 namespace Test { class Program { static voidMain(string[] args) { MyHobby[]hobbies=new MyHobby[4]; hobbies[0] = new MyHobby(); hobbies[1] = new Writing(); hobbies[2] = new Programing(); hobbies[3] = new Music(); foreach(MyHobby obj in hobbies) { obj.Interest(); } Console.ReadKey(); } } /// <summary> /// 基类 MyHobby /// </summary> class MyHobby { public virtual void Interest() { Console.WriteLine("我的爱好是:"); } } /// <summary> /// Writing 继承 MyHobby /// </summary> class Writing : MyHobby { public override void Interest()//重载方法Interest() { Console.WriteLine("写作"); } } /// <summary> /// Programing 继承 MyHobby /// </summary> class Programing : MyHobby { public override void Interest()//重载方法Interest() { Console.WriteLine("编程"); } } /// <summary> /// Music 继承 MyHobby /// </summary> class Music : MyHobby { public override void Interest()//重载方法Interest() { Console.WriteLine("音乐"); } } }
运行结果:
总结:思想是,从基类中派生出三个类,在这三个类中重载基类的方法,然后重新调用派生类中的方法。因为每一次重载的功能都不一样,所以就实现了多态!
接口
还是用一个例子来说明:
using System;//包含基本类和基类 using System.Collections.Generic;//定义泛型集合的接口和类 using System.Linq;//支持语言集成查询 using System.Text;//包含用于字符编码等功能的对象 namespace Test { class Program { static voidMain(string[] args) { UseInterface u = new UseInterface();//创建对象,调用方法 u.SayHello(); Console.ReadKey(); } } /// <summary> /// 定义了一个接口FirstInterface /// </summary> interface FirstInterface { string Name//定义了一个属性 { get; set; } void SayHello();//关键定义了方法,但是没有方法体! } /// <summary> /// 既然已经继承了接口,那必须要实现接口中的全部属性,方法等,缺一不可, /// 例如如果不实现Name属性,程序就会报错! /// </summary> class UseInterface : FirstInterface { string name = "我的名字叫龙腾!"; public string Name//重新实现接口中的属性 { get { return name; } set { name = value; } } /// <summary> /// 实现接口中的方法,这里不需要像多态中用到的 override 改写方法,直接拿过来加上方法体就可! /// </summary> public void SayHello() { Console.WriteLine("大家好!"+this.name); } } }
运行结果:
总结:接口的本质就是一些方法!但是要使用这些方法必须要按照一定的规则,否则就不能使用。定义接口,其实质就是定义规则,要使用接口,必须在它的规则下进行!
抽象
抽象类和接口有一些相似之处,它们都包含由派生类继承的成员,接口和抽象类都不能直接实例化!(虚的东西你怎么能拿来使用呢对吧?必须要使用第三方的东西来搭桥)
using System;//包含基本类和基类 using System.Collections.Generic;//定义泛型集合的接口和类 using System.Linq;//支持语言集成查询 using System.Text;//包含用于字符编码等功能的对象 namespace Test { class Program { static voidMain(string[] args) { UseMyAbstract u = new UseMyAbstract();//创建对象,调用方法 u.SayHello(); Console.ReadKey(); } } /// <summary> /// 定义一个抽象类MyAbstract /// </summary> abstract class MyAbstract { public abstract void SayHello();//定义一个抽象方法,同样没有方法体! } /// <summary> ///定义一个 UseMyAbstract类 继承 MyAbstract抽象类 /// </summary> class UseMyAbstract : MyAbstract { public override void SayHello()//改写抽象类MyAbstract中的方法SayHello() { Console.WriteLine("大家好!我是龙腾!"); } } }
运行结果:
总结:抽象类可以拥有抽象成员,但是不能直接被实例化,并且没有代码体,它的执行方法是在其派生类中实现的!注意,只要这个类中有一个方法定义为抽象方法,那么这个类必须定义为抽象类!
以上只是我个人的一些小的学习感悟!希望能帮到那些需要帮到的人!
作者:李正兴 英文名:black_li
出处:http://www.cnblogs.com/longteng1991/
如果,您喜欢这篇文章的话,您可以分享给您的好友,请点击按钮【推荐】。
如果,您想更快的阅读我的最新文章,您可以关注我,请点击按钮【关注】。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- 黑马程序员——面向对象(下)— 重写、多态、抽象、接口
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- 9. 面向对象 -- 多态、抽象、接口
- 黑马程序员---面向对象:继承、抽象、接口和多态
- 黑马程序员——java-面向对象二(继承,多态,抽象,接口,包,内部类)
- 面向对象的继承、封装、多态、抽象、接口相关
- Java基础-->面向对象<继承,内部类,多态,包,抽象与接口>
- java 面向对象三大特性(封装,继承,多态)以及抽象、接口的介绍
- PHP5的接口技术和面向对象中多态的应用
- 黑马程序员-Java的面向对象(抽象类、接口、内部类和继承、组合、多态)
- 黑马程序员------面向对象(No.6)(接口、多态)
- C#多态(虚方法,抽象,接口实现)
- 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
- IT第十九天 - 继承、接口、多态、面向对象的编程思想
- 设计引导---一个鸭子游戏引发的设计(多态,继承,抽象,接口,策略者模式)
- C#封装、多态、抽象、接口、匿名方法等学习
- 面向对象—多态与抽象
- Python面向对象之接口、抽象类与多态详解
- 一起谈.NET技术,对抽象编程:接口和抽象类