***********************面向对象编程************************
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.属性不一定要对应成员变量而存在,可以没有对应的成员变量也可写属性