C# VS 面向对象基础(一)
2015-08-24 15:22
513 查看
面向对象(Object Oriented,OO)的相关知识学习了很多了,这篇博客我从C#实现面向对象的理论来做个初步的总结。
在这篇博客中,我通过一个例子讲述了,面向对象中,类,类的实例化,构造方法,方法重载,类的属性,封装和继承,这些概念的代码实现。首先我们再次了解这些名词的相关知识。
类:就是具有相同属性和功能的对象的集合。
构造方法:就是对类进行初始化。如果不编码则系统将默认生成空的构造方法。
方法重载:提供了创建同名的多个方法的能力,但是这些方法需要有不同的参数类型。他可以在不改变原方法的基础上增加新功能。
属性:适合于以字段的方式使用方法调用的场合,这里字段是存储类要满足其设计所需要的数据。
封装:每个对象都包含他能进行操作的所有信息。封装可以减少耦合,类的内部可以修改,可以使类具有清晰的对外接口。
继承:如果子类继承父类,第一子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能,还可以以自己的方式实现父类的功能(方法重写)。
下边我们看这个例子来对上边的知识点进行深一步理解:
看里边的注释即非常清楚,下边我们看看输出的结果:
在这篇博客中,我通过一个例子讲述了,面向对象中,类,类的实例化,构造方法,方法重载,类的属性,封装和继承,这些概念的代码实现。首先我们再次了解这些名词的相关知识。
类:就是具有相同属性和功能的对象的集合。
构造方法:就是对类进行初始化。如果不编码则系统将默认生成空的构造方法。
方法重载:提供了创建同名的多个方法的能力,但是这些方法需要有不同的参数类型。他可以在不改变原方法的基础上增加新功能。
属性:适合于以字段的方式使用方法调用的场合,这里字段是存储类要满足其设计所需要的数据。
封装:每个对象都包含他能进行操作的所有信息。封装可以减少耦合,类的内部可以修改,可以使类具有清晰的对外接口。
继承:如果子类继承父类,第一子类拥有父类非private的属性和功能;第二,子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能,还可以以自己的方式实现父类的功能(方法重写)。
下边我们看这个例子来对上边的知识点进行深一步理解:
[csharp] view plaincopyprint? <span style="font-size:18px;">namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e)//单击猫叫按钮的事件方法 { Cat cat = new Cat("咪咪"); //类的实例化 cat.ShoutNum1 = 7; MessageBox.Show(cat.shout()); } private void button2_Click(object sender, EventArgs e) //单击狗叫的按钮的事件方法 { Dog dog = new Dog("旺财");//这里只是简单的调用方法,即可实现目的,体现了封装的特性 dog.ShoutNum1 = 6; MessageBox.Show(dog.shout()); } } class Animal//声明一个父类 { protected string name = "";//声明类的的私有字符串变量name public Animal(string name)//定义cat类的构造方法,参数是输入一个字符串 { this.name = name;//将参数赋值给私有变量 } public Animal()//将构造方法重载 { this.name = "无名"; } protected int shoutNum1 = 3;//声明一个内部字符段,默认值3, public int ShoutNum1//属性的设置 { get//get表示外界调用属性的值 { return shoutNum1; } set//set表示外界可以给属性的赋值 { shoutNum1= value; } } } class Cat : Animal//子类猫,使用了继承的机制,继承了Animal父类 { public Cat(): base() { } public Cat(string name) : base(name) { } public string shout() { string result = ""; for (int i = 0; i < shoutNum1; i++) { result += "喵"; } return "我的名字叫" + name + " " + result; } } class Dog : Animal//子类狗,继承父类Animal { public Dog() : base() { } public Dog(string name) : base(name) { } public string shout() { string result = ""; for (int i = 0; i < shoutNum1; i++) { result += "汪"; } return "我的名字叫" + name + " " + result; } } }</span>
看里边的注释即非常清楚,下边我们看看输出的结果:
相关文章推荐
- C#面向对象 基础概念25个
- C# 单例模式和泛型应用
- C# 生成时间戳
- C#堆内存分配和栈内存分配
- C#面向对象基础
- C# 基本运算符重载
- C#中泛型List的定义与用法以及常用函数
- C#图片存到资源文件,以及调用图片
- C# 中的委托和事件【转载】
- C#软件winform程序安装包制作及卸载程序制作
- c# 获取所有网卡的信息(IP。MAC)
- C#窗体控件简介
- C#实现判断当前操作用户管理角色的方法
- 10个C#编程和Visual Studio使用技巧
- C#实现简单的Login窗口实例
- 生成大小为100的数组,从1到100,随机插入,不连续,也不重复[C#]
- C# 资源释放及dispose、close方法
- c#udp
- Best Time to Buy and Sell Stock C#
- C#中StreamWriter与BinaryWriter的区别兼谈编码。