专注

导航

面向对象基础二-继承

一、封装
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。每个对象都包含能进行操作所需要的所有信息,这个特性就是封装,因此对象不必依赖其他对象来完成工作。
二、继承
对象继承就是is-a的关系。
如果子类继承父类,那么(1)子类拥有父类非private的属性和功能;(2)子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;(3)子类还可以以自己的方式实现父类的功能(方法重写)
还是以动物为了,我们如果要创建一个狗叫“旺”的提示框,最原始的做法就是和Cat类几乎一样的创建一个Dog的类,但是,我们发现里面大部分代码都是一样的,所以,我们可以通过继承,首先创建一个Animal的父类,然后Cat类和Dog类继承Animal父类。

   1:     class Animal
   2:      {
   3:          protected string name = "";
   4:          public Animal(string name)
   5:          {
   6:              this.name = name;
   7:          }
   8:          public Animal()
   9:          {
  10:              this.name = "无名";
  11:          }
  12:          protected int shoutNum = 3;
  13:          public int ShoutNum
  14:          {
  15:              get { return shoutNum;}
  16:              set { ShoutNum = value; }
  17:          }
  18:      }

 

1

需要注意的地方:在C#中,子类从父类中继承的成员有方法、域、属性、事件、索引指示器,但对于构造方法,有一些特殊,它不能被继承,只能被调用。对于调用父类的成员,可以用base关键字。

   1:     class Cat : Animal
   2:      {
   3:          public Cat()
   4:              : base()
   5:          {        }
   6:          public Cat(string name)
   7:              : base(name)
   8:          {        }
   9:          public string Shout()
  10:          {
  11:              string result = "";
  12:              for (int i = 0; i <= shoutNum; i++)
  13:              {
  14:                  result += "喵 ";
  15:              }
  16:              return "我的名字叫" + name + "," + result;
  17:          }
  18:      }
  19:  class Dog:Animal
  20:      {
  21:          public Dog()
  22:              : base()
  23:          {        }
  24:          public Dog(string name)
  25:              : base(name)
  26:          {        }
  27:          public string Shout()
  28:          {
  29:              string result = "";
  30:              for (int i = 0; i <= shoutNum; i++)
  31:              {
  32:                  result += "旺 ";
  33:              }
  34:              return "我的名字叫" + name + "," + result;
  35:          }
  36:      }

posted on 2011-11-13 12:23  陈啊M  阅读(174)  评论(0编辑  收藏  举报