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#之重构与重载

相关内容