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》看完了,就看《模式设计》,多敲代码。