黑马程序员——C#面向对象加强

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

     -->C#面向对象是相对于面向过程而言的,面向过程强调的是功能行为,完成任务由多个方法完成;面向对象将功能进行封装,完成任务由对象来完成。

     -->知识点1:异常处理。一般的就是通过try-catch来实现异常处理或者加上finally。通过:throw new Exception("异常信息");来抛出异常。

     ------------------实际上异常也是有一个类——Exception类,比如try {...}  catch(Exception)  {Console.WriteLine(ex.Message); } throw new Exception ("出错了!");,底层类似于Exception ex=new Exception ("出错了!");。注意当异常向上抛的时候,如果上方没有代码对其进行处理,那么该异常就会一直往上抛,直到接收或者抛到操作系统为止。

     -->知识点2:构造方法与属性的区别:本身两者就不是同一个层次的东西,切记不要混淆,构造方法是一种行为,而属性是一个特征,一个值,可以读取和和被赋值;构造方法是一种从无到有的过程,从没有对象到创建一个对象,并且分配内存空间,并对对象的字段初始化,只在创建对象时使用,属性是在创建对象之后和释放对象之前才使用。

     -->知识点3:熟练掌握字符串方法:ToLower()、ToUpper()、Trim()、Compare()、Equals()、Join()、Split()、Contains()、IndexOf()、IndexOfAny()、LastIndexOf()、Substring()、Insert()、Remove()、Replace()以及string.Format()。并记住字符串的不可变性,上述方法只是重新生成一个字符串并返回新字符串。

     -->知识点4;引用类型与值类型。比如结构:struct  SPerson { public int age; public int height; },类class CPerson { public int age; public int height;  }。

     -----------------使用结构必须对其所有成员赋值:SPerson sp1 = new SPerson(); sp1.age=23; sp1.height=180;;或者通过构造方法赋值:SPerson sp1=new SPerson();。

     -----------------SPerson sp2=sp1;sp1.age=25; sp1.heigt=170;。此时sp2.age的值23,sp2.height的值为180;但是如果将”结构“换成“类”,那么sp2.age的值为25,sp2.height的值为170。结构是一个值类型,而类是一个引用类型。

     -----------------结构,在创建结构变量的时候,会根据结构的定义,结构定义多大,就分配多少内存空间。上面sp1赋值给sp2时,是sp1复制了一份值并赋值给sp2,两个完全不相干的变量,进行完复制和赋值操作之后,sp1和sp2就再没有任何关系了。

     -----------------类,复制的时候,sp1是将地址复制一份并赋值给sp2,由于它们的值指向同一个地址,当修改任意一个变量的值时,另一个变量的值也会发生变化。

     -----------------值类型是复制值并传递过程,数据类型、枚举、结构都是值类型;而引用类型是赋值引用地址并传递引用过程了,类、接口、数组都是引用类型。

     -->知识点5:继承。继承符号——:,比如class Man;Person { },就代表类Man继承类Person,类Man继承类Person除了private修饰的所有字段及属性,当然也可以有自己的成员。前者称为子类或者派生类,后者称为父类或者基类。

     ------------------注意:继承有传递性,没有继承,就默认继承自Object类,继承了其它类也就间接继承了Object类。并且继承都是但继承,只能继承自一个类。

     -->知识点6:继承类的构造方法调用顺序。如果一个类继承了另一个类,那么调用构造方法时会先调用父类的无参构造方法,再调用本类的构造方法。如果子类想要调用父类特定构造方法,就需要在本类的构造方法后面加上:base,比如public Man(string name , int age ): base( age) { }。通过加上:this调用本类的构造方法。

     -->知识点7:里氏转换。子类可以无条件赋值给子类,如果父类指向的是子类,父类可以强制转换成子类。父类 父类实例=new 子类();子类 子类实例=(子类)子类实例;。

     -----------------比如类Man继承类Person,类Person中个age字段,类Man继承age字段,并且有自己的字段jump。

     -----------------Person p=new Person(); Man m=(Man)p;。p只能访问到age字段,无法访问到jump字段,而m不仅可以访问到age字段,也可以访问到jump字段。当子类赋值给父类的时候,父类中没有的字段会通过“处理”,然后让父类访问,而再转换成子类时,那个“处理”会去掉,让子类可以访问到。

     -->知识点8:类型转换。用一个关键字:is,实例名 is 类型名,如果左边能够转换成右边,那么整个表达式的值为true,否则为false;还有一个关键字:as,实例名 as 类型名,如果左边能够转换成右边,就返回转换后的值,否则返回null。

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值