C++ 面向对象基础

来源:互联网 发布:sql语句创建视图 编辑:程序博客网 时间:2024/09/21 06:16

1. 类和实例

     类就是具有相同的属性和功能的对象的抽象集合。

     实例,就是一个真实的对象,实例化就是创建对象的过程,使用new关键字来创建。

class Cat{      public string Shout()      {           return "苗";      }}private void button1_Click(object sender, EventArgs e){     Cat cat = new Cat();     MessageBox.Show(cat.Show());}

2. 构造方法

    构造方法,又叫构造函数,其实就是对类进行初始化。构造方法与类名相同,无返回值,也不需要

void ,在new的时候调用。

     所有的类都有构造方法, 如果你不编码则系统默认生成空的构造方法,若你有定义的构造方法,那么默认的构造方法就会失效

class Cat{      private string name = "";      public Cat(string name)      {           this.name = name;       }      public string Shout()      {           return "我的名字叫" + name + "苗";      }}private void button1_Click(object sender, EventArgs e){     Cat cat = new Cat("咪咪");     MessageBox.Show(cat.Show());}

3 方法的重载

       方法重载提供了创建同名的多个方法的能力,但这些方法使用不同的参数类型。注意并不是只是有构造方法可以重载,普通的方法

也是可以重载的。

class Cat{      private string name = "";      public Cat(string name)      {           this.name = name;      }            public Cat()      {           this.name = "无名";      }       public string Shout()      {           return "我的名字叫" + name + "苗";      }}
       注意方法重载时,两个方法必须要有方法名相同,但参数的类型或个数必须要有所不同。否则重载就没有意义了。

4. 属性和修饰符

     public :表示它所修饰的类成员可以允许其他任何类来访问,俗称共有的。

     private:表示只允许同一个类中的成员访问,其他的类包括它的子类无法访问。俗称私有的。

5. 封装

      每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作

      封装的好处?

      1. 良好的封装能够减少耦合。

       2. 类内部的实现可以自由的修改。

       3. 具有清晰的对外接口。

6. 继承

      对象的继承代表了一种 'is -a '的关系,如果两个对象A和B,可以描述为'B'是‘A’,则表明B可以继承A。

      继承者还可以理解为对被继承者的特殊化,因为它除了具备被继承者的特性外,还具备自己独有的特性

      学习继承最好是记住三句话:

           1. 子类拥有父类非private的属性和功能;

           2. 子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能。

           3. 子类还可以以自己的方式实现父类的功能(方法重写)

           protect 表示继承时子类可以对基类有完全访问权。也就是说protect修饰的类成员,对子类公开

     但对其他的类不公开。

           不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,也继承的优点

    继承使得所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复,另外,继承可使得修改或扩展继承

   而来的实现都较为容易。

           继承的缺点:

            1. 父类变,则子类不得不变。 2. 继承会破坏包装,父类实现细节暴露给子类。增加了2个类的耦合。

              耦合:简单的理解就是藕断丝连的意思,两个类尽管是分开的,但如果关系密切,一方的变化会影响到另一方,这就是

    耦合性高的表现,继承显然是一种类与类之间强耦合的关系。

7. 多态

     多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。

     1. 子类以父类的身份出现

      2. 子类在工作时以自己的方式来实现

      3. 子类以父类的身份出现时,子类特有的属性和方法不可以使用。

8. 重构

9. 集合

     数组的优点,比喻说在内存中连续存储,因此可以快速而容易地从头到尾遍历元素,可以快速的修改元素等等,

缺点:创建是必须指定十足变量的大小,还有在两个元素之间添加元素也比较困难。

      ArrayList的容量是ArrayList可以保存的元素数, ArrayList的默认初始容量为0,随着元素添加到ArrayList中,容量

会根据需要通过重新分配自动增加,使用整数索引可以访问集合中的元素。此集合的索引从零开始。

     即: 数据的容量是固定的,而 Arraylist 的容量可以根据需要自动扩充。

     集合ArrayList 相比数据有什么好处?

      主要就是它可以根据使用大小按需动态增加,不用受事先设置其大小的控制。还有就是可以随意的添加,插入,或

移除某一范围元素,比数组要方便。

       ArrayList 不是类型安全的。还有就是就是ArrayList对于存放值类型的数据,比如:int string 型或者结构struct

的数据,用ArrayList就意味着都需要将值类型装箱为Object对象,使用集合的元素的时候,还需要执行拆箱操作,这就带来

了很大的性能损耗。装箱和拆箱  就是强制类型转换的意思。

相对于简单的赋值而言,装箱和拆箱过程需要进出大量的计算。对值类型进行装箱时,必须分配并构造一个

全新的对象。其次,装箱所需的强制转换也需要进行大量的计算[MSDN].

10 泛型

泛型是具有占位符(类型参数)的类,结构,接口和方法,这些占位符是类,结构,接口和方法所存储或使用

的一个或多个类型的占位符。泛型集合类可以将类型参数作它所存储的对象的类型的占位符;类型参数作为其字段的类型

和其他方法的参数类型出现。

通常情况下,都建议使用泛型集合,因为这样可以获得类型安全的直接优点而不需要从集合类型派生并实现

类型特定的成员。此外,如果集合元素为值类型,泛型集合类型的性能通常优于对应的非泛型集合类型(并优于

非泛型集合类型派生的类型),因此使用泛型时不必对元素进行装箱。

11. 委托于事件

委托是对函数的封装, 可以当做给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义

的事情时,事件对象处理通知过程。

   


          




    

    



   

0 0
原创粉丝点击