黑马程序员-C#面向对象学习日记

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

    面向对象有三个过程:封装、继承、多态。

    类是抽象的,对象时具体的,对象可以叫类的实例。类之间可以有继承关系。字段field,是类的状态,类不占内存,对象占内存。方法,方法就是类能够和执行的动作。

    intdatetimeboolchar等类型都属于值类型(ValueType,赋值的时候是传递拷贝。普通的对象则是引用类型,赋值的时候是传递引用。

    异常与异常处理

    传统的错误表示方式:错误码。难以看出错误原因,需要知道错误码的含义,如果不处理错误码,则程序陷入不可以预知的错误。

try catchException ex异常也是对象。Exception类只要属性:MessageStackTrace。发生异常后程序默认就退出了,后续代码不会被执行。Catch以后的代码则会继续执行。不要吃掉异常,抛出自己的异常。

    常量与静态成员

    Const 常量。常量需要大写,一定不会变化的值才能声明为常量。

    全局变量:static类变量。

    不用new就能够用的方法:static方法,static方法其实就是普通的函数。在static方法中可以调用其他static成员,但不能调用其他static成员,在非static方法中可以调用static成员。

    静态类,不能够被new的类就是静态类,静态类一般来实现一些库函数。如SqlHelperPageHelper等。

    命名空间:

    Namespace(命名空间),用来解决类重名的问题,可以看做类的文件夹,可以修改默认的namespace。在代码中使用其他类的时候需要using类所在的namespace。如果代码和使用的类在一个命名空间,则不使用using

类使用实例代码:

 class program

{

   Static viod Main(string[] args)

   {

  Person p1=new Person();

  P1.Name=”tom”;

  P1.Height=180;

  P1.Age=30;

  P1.SayHello();

  Console.ReadKey();

}

}

 class Person   //声明一个person

  {

    public int Height;

    public int Age;

    public string Name;

   public viod SayHello()

    {

  Console.WriteLine(“大家好,我叫{0},我的身高是{1},我的年龄是{2}”this.Name,this.Height,this.Age);

}

}

    字段、方法、属性都可以叫做类的成员Merber,他们都需要定义访问级别,访问级别的用处在于控制哪些地方可以被访问,正阳达到面向对象中“封装”目的。Public(任何地方都可以访问),private(默认级别,只能由本类中成员访问)。属性开头字母大写,字段开头字母小写。

    练习:聊天机器人

namespace  聊天机器人

{

  class program

  {

  Static void Main( string[] args)

   {

  机器人 r1=new 机器人();

   r1.Name=”I”

   r1.Eat(5);

   r1.SayHello();

  while(true)

  {

  String str=Console.ReadLine();

  r1.Speak(str);

}

Console.ReadKey();

}

}

Class 机器人

{

  Public string Name{get;set}

  Private int FullLevel{get;set}

  Public void SayHello()

  {

  Console.WriteLine(“我叫:{0}”Name);

}

}

Public void Eat(int foodcount)

{

  If(FullLevel>100)

   {

  return;

}

    FullLevel=FullLevel+foodCount;

}

Public void Speak(string str)

 {

  if(FullLevel<=0)

   {

  Console.WriteLine(“饿死了,不说了”)

  return;

}

     if (str.Contains(“姓名”)||str.Contains(“名字”))

     {

  this.SayHello();//类的方法调用同类的另外一个方法

}

     else if(str.Contains(“女朋友”))

     {

  Console.WriteLine(“年龄小,不考虑!”);

}

else

 {

  Console.WriteLine(“听不懂”)

}

FullLevel--;

}

}

    构造函数:

    构造函数用来创建对象,并且可以在构造函数中对对象进行初始化。构造函数是用来创造函数的特殊对象,函数名类名一样没有返回值,连void都不用。构造函数可以没有参数,new对象的时候传递函数参数即可。构造函数可以重载,也就是有多个参数不同的构造函数。如果不指定构造函数,则类有一个默认的无参构造函数。如果制定了构造函数,则不再有默认的无参构造函数,如果需要无参构造函数,则需自己写。

构造函数实例:

namespace  构造函数

{

  class program

   {   static void Main(string[] args)

       {

   Person p1=new person();

  Person p2=new person(“tom”);

}

}

  Class person

   {

  public person()

  {

}  

Public person(string name)

{

}

}

}

    继承:定义类的时候不指定父类,则父类是Object类。Object类是任何类的直接或间接父类。

继承实例:

namespace 继承

{

  class program

  {

   Static void Main(string[] args)

   {

  中国人 c1=new 中国人();

  C1.Name=”李小龙”;

  C1.SayHello();  //子类可以调用父类的方法

Console.ReadKey();

}

}

class person

  {

  Public string Name{get;set}

  Public int Age{get;set}

  Public void SayHello()

  {

  Console.WriteLine(“{0}”,this.Name);

}

}

   Class 中国人:Person  //指明中国人的父类是person

  {

}

}

    索引器:

    C#中提供了按照索引器进行访问的方法。定义索引的方式:string this[int index]{return”’;}set{},string为索引器的类型,[]中是参数列表。进行索引器写操作就是调用set代码块,在set内部使用value得到用户设置的值;进行读操作就执行get代码块。索引器可以不只一个,类型也不只int,几乎可以是任意类型。

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

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值