日期:2014-05-17  浏览次数:21097 次

C#总结(三)—三大特性(封装、继承、多态)

一、封装

1、定义

         每个对象都包含它进行操作所需要的所有信息,这个特性称为封装。因此对象不必以来其他对象来完成自己的操作。这样方法和类包装在类中,通过类的实例来实现。

2、好处

  1. 良好的封装能够减少耦合;
  1. 类内部实现就可以自由地修改;
  1. 类具有清晰的接口;

3、实例

class  Cat

{

        private string name="";

        public Cat(string name)

        {

             this name=name;

        }

  

       public string Shout()

       {

               return "我的名字叫"+name+"小猫";

      }

}


二、继承

1、定义

        继承就是从父类中获取一些公开的成员,如方法和属性。C#中只允许继承一个父类,但允许继承多个接口。如果子类继承接口,则必须实现接口中定义的所有公开成员。

         公开成员是指在父类中定义为public的成员(public的作用域可在子类中生效,而private作用域则不可)

子类继承父类:

  1. 子类拥有父类非Private的属性和功能;
  2. 子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能;
  1. 子类还可以以自己的方式实现父类的功能(方法重写)

2、优点

        继承使得所有子类公共部分都放在父类中,使得代码得到共享,这就避免了重复。此外,继承可使得修改或扩展继承而来的实现都较为容易。

3、实例

例1:

//父类 ParentClass

classParentClass

 {

       privatestring_name;                //属性

       public stringParentName        //父类名

       {

              get{return _name;}

              set{_name=value;}

        }

}

//子类

//父类SonClass

class SonClass:ParentClass

 {

       privatestring_name;                //属性

       public stringSonName        //子类名

       {

              get{return _name;}

              set{_name=value;}

        }

}

//客户端

SonClass myson=new SonClass(); //创建子类对象

myson.ParentName="父名";          //自动继承父类的属性

myson.SonName="子名";          //子类自己的属性

例2:

  private void button1_Click(object sender,EventArgs e)

        {

            Cat cat = new Cat("咪咪");//将类实例化 Cat  cat声明一个Cat对象,对象名为cat;newCat()将此cat对象实例化

            cat.ShoutNum = 5;            //给属性赋值

            MessageBox.Show(cat.Shout());

        }

        class Animal                               //定义父类

        {

            protected string name ="";          //注意变为Protected  子类可以继承

            public Animal(string name)

            {

                this.name = name;

 

            }

            public Animal()

            {

                this.name = "无名";

            }

            protected int shoutNum = 3;               //变为protected

            public int ShoutNum

            {

                get

                {

                    return shoutNum;

                }

                set

                {

                    shoutNum = value;

                }

            }

        }

        class Cat : Animal                       //注意变化

        {

            public Cat() : base()                //子类构造方法需要调用父类同样参数类型的构造方法,用base关键字代表父类

            { }

            public Cat(string name):base(name)           //注意变化

            { }

            public string Shout()

            {

                string result = "