C#中的面向对象
C#中的面向对象
面向对象是一种设计思想,其实就是将一些功能进行封装,使得这个功能有一个可以使用的实体。比方说狗就可以当成一个对象,其完成的功能是叫。在C#中面向对象也是一样的,其也有三大属性:封装,继承,多态。下面就来看看是如何在C#中实现的。
1、首先先说封装:
还是以狗叫为例,其功能为叫,按照一般的写法就会在主窗体里面写一下代码就可完成
Private void button1_Click(object sender,EventArgs e)
{
MessageBox.Show("旺");
}
但对其进行封装后就会有一下
class Dog
{
public string Shout()
{
Return "旺";
}
}
Private void button1_Click(object sender,EventArgs e)
{
Dog dog=new Dog();
MessageBox.Show(dog.Shout());
}
这样就简单的完成了对狗叫这个能能的封装,这样做是有好处的:
1)将主窗体和功能代码分开,减少耦合
2)可以实现类内部的自由修改而不影响别的部分
3)类对外也有了清晰的可调用的接口
2、其次再来说这个继承:
还以上面的为例,狗除了是狗它还是动物,所以动物所具有的一些东西和功能,狗都有,但是狗有的动物不一定有(比如抓兔子)。这种情况就叫狗继承于动物。用代码展示就是:
class Animal
{
Protected string name="";
public Animal(string name)
{
this.name=name;
}
}
class Dog:Animal
{
Public Dog():base(name)
{}
}
主函数不变,还是上面的,这样狗类就继承了Animal的属性name。当然继承还是有很多好处的,比如避免代码的重复,使得代码得到共享,还有利于修改和扩展。
3、最后再说多态:
所谓多态就是不同的对象可以执行不同的动作。还以叫这个动作为例,执行这个动作的可以是狗叫,猫叫等等。具体代码如下:
Abstract class Animal
{
//叫这个动作
protected virtual void Shout();
}
class Dog:Animal
{
//狗可以执行这个动作
protected override void shout()
{
return "旺";
}
}
class Cat:Animal
{
//猫可以执行这个动作
protected override void shout()
{
return "喵";
}
}
而在主窗体上则换成以下的:
Animal animal1= new Dog();
Animal animal2= new Cat();
animal1.shout();
animal2.shout();
多态在面向对象过程的设计中应用的非常广泛,尤其是在设计模式中,虽然我看了一点,但是基本上都是多态进行实现的。
最后总结一下:
由于面向对象程序的这些个特性使得面向对象编程有许多的优点:符合人们习惯的思维方式,易于维护和功能的扩展,代码重用性好等等一些优点。所以这些特性就是我们学习面型对象编程的基础,其重要性不言而喻。
C#之重构与重载
评论暂时关闭