------- <a href" target="blank">Windows Phone 7手机开发</a>、<a href="" target="blank">.Net培训</a>、期待与您交流! ------

 

变量作用域 (1)局部变量在使用前,必须:a.先声明b.再赋值c.然后才能使用。 (2)局部变量只能在变量的作用域范围中使用。 (3)类的成员变量,声明的时候如果没有赋值,则会有默认值,数字类型是0,string是null,bool是false。 类是一个抽象的概念,而对象具体到某个物体。 构造函数也类同名,类中有一个默认的构造函数,如果程序员定义了一个构造函数,那么默认的构造函数就会被替代。 面向对象的三大特性:封装、继承(是指类与类之间的关系)、多态。 封装:(通俗说法:封装变化的量)

 

继承:BaseClass—基类、DenvedClass—派生类       ParentClass—父类、ChildClass—子类 继承的好处:代码重用 继承的单根性,一个类同时只能继承一个父类。 C#中任何一个类都是继承自object,如果一个类没有显示继承自任何类,则默认继承自object类 如果显示的指定了当前类继承某个类,则将覆盖默认继承的object类 继承的特性:单根性,只有一个父类。 继承的传递性: SuperMan(定义的类)继承了object,这时,SuperMan类中就有了从object类中继承下来的4个方法Tostring()、GetType()、GetHashcode()、Equals()。然后Person(定义的类)有继承了superMan(定义的类),这时,Person会将SuperMan重的那4个方法在继承下来。由于那4个方法是在object中的,所以相当于Person类间接从object类中继承下来的成员这个就叫继承的传递性。

1.继承的时候,构造函数不能被继承。 2.子类的构造函数会默认去调用父类的无参数的构造函数。 3.构造函数不能继承可以调用,调用有两种方法 1.在父类中定义一个无参数的构造函数 2.不修改父类,而是在子类的构造函数后面通过:base(),显示的去调用父类的某个构造函数。 base()的作用1.在子类中调用父类的构造函数。 this作用1.在当前类的构造函数后面通过(:this)来调用当前类自己的其他构造函数。 集合初始化器:List<int和其他类> list = new List<int>(); List.Add(赋值); ………… List.Add();

类的访问修饰符只能是public或者是internal 要求方法参数的访问级别与方法本身的访问级别一致。

可访问性不一致,属性的访问级别与属性的类型的访问级别不一致就会报错。

多态: 把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求得不断变化。

 

当一个方法是虚方法(virtual)的时候,那么这个方法在子类中就可以被重写了。子类继承父类以后,可以直接使用该方法,也可以将该方法重写。当子类如果要重写父类中的方法,则需要在子类的方法中加一个override关键字,子类重写父类的方法必须只能用override关键字。

静态成员: 1.调用静态方法的时候必须通过类名直接来调用,不能通过对象来调用,也就是说使用静态成员不需要实例化对象。 2.静态成员会在整个应用程序退出时,才释放资源。所以可以在整个应用程序中共享数据。 3.静态类不能被实例化,不能被继承。 4.由于静态成员会在整个程序退出时,才释放资源,所以尽量避免写静态字段或静态属性,最好只写静态方法。 5.当给一个普通类添加静态字段后,系统会默认为该类生成一个静态构造函数[静态构造函数不能有访问修饰符,并且也不能带来参数]

1.什么情况下要将一个类标记为静态类?   一般情况是,当这个类是一个工具类,里面都是方法。为了让用户调用的时候方便,不需要实例化对象,这时可以将该类记为static类,此时该类中只能包含静态成员,不能包含实例化成员。比如:convert、Math、File、console..... 2.什么情况下需要在一个普通类中编写一个静态成员,而这个类不能标记为static? 当这个类需要被实例化的时候。如果这个类中有一个成员是所有对象都共享的数据,这时可以将该类中的这个成员标记为静态的,但是这个类还是一个实例类。

静态类的构造函数,只会在第一次使用静态类之前,执行,并且只会执行一次。 静态构造函数不能有访问修饰符,不能有参数。

密封类:不让继承,不让方法修改。   里氏替换原则:当需要一个父类型对象的时候,可以给一个子类类型的对象。当需要一个子类类型对象,给一个父类类型对象是不报错的。

使用as用类型转换 使用is是为了避免显示类型转换时报异常,可以提前判断一下类型。 抽象方法: 1.抽象方法不能有任何方法体。 抽象成员必须卸载抽象类中,不能写在一个实例中。 这个类也必须标记为abstract(抽象)的。 3.父类中的抽象成员,子类继承以后必须重写(例外:除非子类也是一个抽象类。) 抽象成员不能是私有的(private) 在抽象成员中可以包含不抽象成员。

抽象类是不能被实例化的。抽象类的作用就是为了继承的。 抽象类是有构造函数的。

========================================== 如果父类中的方法有默认的实现,并且父类需要被实例化这时可以考虑将父类定义成一个普通类,用虚方法类实现多态。

如果父类中的方法有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。

在类中如果没有访问修饰符则默认为私有的。

 接口:接口就是一种规范,协议(*),约定好遵守某种规范就可以写通用的代码。

1.接口中只能包含方法。(方法、属性、索引器、事件) 2.接口中的方法也不能有任何实现(就像抽象方法一样,直接加个分号) 3.接口中的成员不能有任何访问修饰符(哪怕是public),默认为Public 4.接口也不能被实例化 5.类不能多继承,所以在某些情况下,只能用接口来代替,因为[接口可以多实现] 6.接口的主要目的:就是为了实现多态。 7.当一个类同时继承了某个类,并且也实现了某些接口的时候,必须要将继承的类写在第一个。 8.没有共同父类是可以用接口。

posted on 2013-08-11 20:42  瑞雪的情  阅读(157)  评论(0)    收藏  举报