首页 > 代码库 > 关于C#--面相对象基础总结

关于C#--面相对象基础总结

A1 10.1号,祖国生日时候,我开始痛下决心决心以后搞软件,一副苦大仇深的样子,想把《Head first C#》看完。期间挫折丛丛,最大的错误在于想把这本书快速看完,忽视了效率 ,终于快看完了,才知道没有做笔记,理解不透彻,有的地方甚至模糊。明白:好的学习方法是最大的效率。急于求进度,往往导致,结果自己不能接受,遇到问题,不去解决,只会更加纠结。做完,在床上,入睡前,随手捡一本书翻翻《大话设计模式》,瞬间我如痴如醉,很多模糊的概念也能理顺了,花了一上午,把一些C#一些概念重新梳理下,于是这篇总结诞生了。这篇很多内容取自《大话设计模式》。

A2 类与实例

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

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

Cat cat = new Cat() ; 是用new,将Cat类实例化,创建实例cat。

A3 构造方法

构造方法,即构造函数。其功能就是对类进行初始化。构造方法与类同名,无需返回值,也不需要void。

Cat cat = new Cat() ;  Cat() 就是构造函数,对Cat 进行初始化。 

Class Cat

  {

    private string name = "" ;

    public Cat (string name)

    {

      this.name = name ; 

    }

  }

A.4 方法重载

方法重载:提供了创建同名的多个方法的能力,但是这些方法需要使用不同的参数类型。

Class Cat

  {

    private string name = "" ;

    public Cat (string name)

    {

      this.name = name ; 

    }

    public Cat()

    {

      this.name = "无名";

    }

  }

注意的是:方法重载时,必须要方法名相同,参数类型或个数必须要有所不同。

重载可以在不改变原方法的基础上,增加新功能。

A.5  属性与修饰符

属性是一个方法或一对方法,但在调用它的代码来看,它是一个字段,即属性适合于以字段的方式使用方法调用的场合。

private int shoutNum = 3 ;

public int ShoutNum

{

  get {return shoutNum ;}

  set {shoutNum = value ;}

}

get :get访问器 返回与申明的属性相同的数据类型,表示的意思是调用时可以得到内部字段的值或引用;set; set访问器没有显示设置参数,但它有一个隐式参数,用关键字value表示,它的作用是调用属性时可以可以给内部的字段或者引用赋值。

总结:变量私有的叫字段,共有的叫属性。

A6 封装

传说中面向对象三大特征:封装,继承,多态;三个常用的修饰符:piblic private protected .

每个对象都包含它能够进行操作所需要的所有信息,因此对象不依赖其他对象来完成自己的操作,我们称之为:封装。

Dog dog = new Dog() ;//其中Dog()我们把它封装了,然后就可以调用Dog()了,但是外在无法修改它。

A7 继承

对象的继承代表了一种 is-a 关系,如果有2对象,A和B,可以描述为B是A,则表明B可以继承A(狗是动物,则狗可以继承动物的一切方法属性,private除外)。

如果子类继承父类:(1)子类拥有父类除private的属性和功能。(2)子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能.(3)子类还可以以自己的方式实现父类的功能。

对于构造函数,它不能被继承,只能被调用。

Class Dog : Animal

  {

  }

继承的缺点:1 父类变,子类不得不变。 2 继承会破坏包装,父类的细节暴露给子类。

A8 多态

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

注意三点:(1)子类以父类的身份出现(2)子类在工作时以自己的方式来实现。(3)子类以父类的身份出现时,子类特有的属性和方法不可用。

为了使子类的实例完全接替来自父类的成员,父类必须将该成员声明为虚拟的(virtual)。子类可以使用override关键字,将父类实现替为自己的实现,这就是 重写 Override .

Class Animal

{

  public virtual string Shout()

  {

  }

}

Class Dog : Animal

{

  public override string Shout()

  {

  }

}

A 9 重构

理解不够透彻,下次再写吧。

A 10 抽象类

c#准许把类和方法申明为abstract , 即抽象类和抽象方法。

需注意几点:(1)抽象类不能实例化(2)抽象方法必须是被子类重写的方法。(3)如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否包含其他方法。

A 11 接口

实现接口的类就必须实现接口中所有的方法和属性

一个类可以支持多个接口,多各类也可以支持相同接口。

接口用interface 进行申明,前面加上 I 。

接口与抽象3个区别:

1 类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象。

2 如果行为跨越不同的类,可以用接口。对于一些相似的类,用继承抽象类。

3 从设计角度讲 ,抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知子类的存在,方法如何实现还不确认,预先定义。

  

A 12 集合

数组优点:在内存中是连续的,运算速度快。

.NET Framework 提供了数据存储和检索的专用类,这些类型统称集合。这些类提供对堆栈,队列,列表,哈希表的支持。

A 13 泛型

泛型集合首先需要 System.Collection.Generic的命名空间。

List类是ArrayList 类的泛型等效类。

A 14 事件与委托

下次写,还不太透彻

 

总结:所有知识点都需要实践,等《First Head》看完了,就看《模式设计》,多敲代码。

 

关于C#--面相对象基础总结