C#学习笔记5:


***********************面向对象编程************************

1.internal 项目内部可以被调用(同一个项目内)

 private 连派生类都不能使用(被成员使用)

2.类的命名(pascal命名法),确保名称是一个名词,如:Book   Employer

成员变量也要使用Pascal命名法,如果成员变量时私有的,要使用Camel(骆驼命名法)

3.类的默认访问修饰符是internal,成员的默认访问修饰符是:private

4.虚拟机加载该类的代码时就创建了静态成员,并且会执行该代码块,例如:第一次创建该类的实例时,就加载执行类的静态成员

5.静态成员不与对象绑定

6.静态成员与非静态成员的区别

a.变量:静态变量在内存中只有个拷贝,虚拟机为静态变量分配一次内存,加载中汶川内存的分配

b.对于实例的变量,煤创建一个实例,就会为这个实例分配一块内存,所有实例变量可以再内存中有多个拷贝,还不影响


7.两种功能时创建静态变量

a.对象之间共享值的时候

b.方便访问变量的时候

c.静态方便不能使用this和super关键字调用,static方法独立于任何实例,因此static方法必须要被实现


8.析构函数:对于一般的对象,程序中不需要定义析构函数


9.

a.一个类中最多只能有个一个析构函数,(系统自动调用)

b.this方法避免方法参数和类成员变量同名时使用


10.静态方法不能直接使用普通变量和普通方法

class program

{

    public string name

    static void Main(  )

        {

          program  p=new program(  )

          p.name="niit"   

       }

}

 //  静态方法不能直接使用普通变量和普通方法,解决的方法是:

a.创建一个实例,然后调用

b.只能调用静态方法和成员


11. public  student (  ) : this("Mary" ,30)  //可以实现构造函数的转换,执行完毕后回到原来的地方

{

}


12.关键字,public ,parameter   一般都放在类型之前

public   static   void   useparameter (...,params object[  ]  list)  //放在所有形参的最后边


13.子类继承的方法,最好不要使用this.fuc(  )

而是要使用base.fuc(  )     //base 指定是基类

14.protected 只能在子类中以继承的方式使用,如 this.fuc(  ),base.fuc( )  ,而不能以父类的方式调用,如:

base  b=new  base( )

b.fuc(  )---->不可以,相当于在外部子类调用父类


15.抽象类和抽象方法

a.抽象类中同时可以存在抽象和普通方法

b.抽象的方法必须在派生类中实现

c.无主体代码,只有函数的原型

d.抽象的方法目的在于指定派生类中必须实现与这一方法关联的行为,抽象方法只在派生类中实现 (override  重写)


16.覆盖也叫重写

a.new(可写可不写),不使用new,则父类和子类都可以调用,如果子类方法覆盖父类的方法,this找到的就是子类的方法,要用base才能调用到父类的方法

b.new   static  virtual  关键字都不能用途override同时使用

c.virtual 方法可以在子类中使用new重写,virtual 方法主要是为了支持多态,而abstract是为了制定同类的标准和规则(在子类中使用override  重写)

d.abstract必须在子类中重写(企业事先规划好的,但未能实现的伪码)


17  访问修饰符  +关键字+类型


18.

a.  接口:定义一个函数定义(类似于abstract),但是不能放入普通成员,只能放抽象成员(抽象类中可以放入普通成员)

b.接口中不能使用访问修饰符

c.基类引用子类的实例-->叫做多态

d.接口也有类似的多态,但是用用接口引用子类实例并调用方法时,不是子类的方法,而是相应接口的方法(相当于父类)


19.abstract   virtual  new(覆盖)  --->都是多态的表现,只不过abstract  virtual  更加明显

20.接口实现的方法形式要与接口的定义原型一致,(包括:形参,返回值)

21.abstract 类的方法功能与接口功能相类似,-->是为了实现功能方法的多态

22.string 类和system.Text.stringBuilder类 (动态的string类)

23.  什么时候使用接口和abstract:当只需要方法,于成员变量无关时,建议使用接口(而且要有明确的形参);

当不明确方法如何做(包括形参,返回值都无法确定时,使用abstract)



*******************************正则表达式******************************

1.   \s 匹配特殊字符  [\f\t\v\n\r]   \f换页符   \v垂直制表符  \r 回车符 

      \w匹配包括下划线的任意一个字符(等价于 [0-9 a-z A-Z  空格]  )

2.代位匹配  x|food  --->等价于x或者food

3.优先级顺序

a.  ( ) 优先处理

b.  由高到低 -->   \    (  )     [   ]  *  +  ?  {n}  ^  $  |

4. ^.....$ 相当于卡位符号,如果无此符号,则可以向两头无限延长

5.普通符号是:数字,字母,标点  ;  特殊符号是:\t  \v  ....

6.输入中文的正则表达式是:  @[\u4e00-\u9fa5]    \\utf8  四字节的表达方式


*************************类复习*************************

1.类内部对类实例是全向透明的

2.属性方便验证

3. 访问修饰符  static   数据类型  属性名    

{

//  如果成员变量为static  则,属性也应该为static ,且针对的是整个类,而不是实例

}

4.

a.属性不能给数组成员set值,索引器属性可以给数组成员set值

b.每个类的索引器只能有一个

c.属性不一定要对应成员变量而存在,可以没有对应的成员变量也可写属性

















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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值