Thursday, December 9, 2010

实现接口

1. 要实现一个接口, 必须要有类实现该接口.

2. 接口的实现可以是派生类, 并且这些派生类可以包括一些自己特有的类成员.

3. 用虚方法或抽象类在它们的子方法里实现.

4. 在确定对象实现了某个特定接口之后,就可以引用该接口. 为了引用接口,可以把对象类型强制转换为接口类型.

5. is和as 操作符也适用于其他类型. 在运行时,可以用它们来确定类的类型. eg. if(obj is IFlyable)//IFlyable 是 interface.
or
//先转换(委婉),再判断转换是否成功.
IFlyable fly = null; fly = obj as IFlyable; // as 是把...当做...
or
IFlyable fly2 = obj as IFlyable;
//如果成功转换, fly不为null, 否则就为null

Tuesday, December 7, 2010

interface接口 与 抽象类的比较

接口: 是一个完全抽象的成员集, 这个成员集为相关操作定义了一组规则. 接口的实现完全留给了开发者.
抽象类: 为管理组件版本提供了一种简单易行的方法. 通过更新基类,所有派生类都将自动进行相应更新. 而接口在创建后就不能再更改. 如果需要修改接口,则必须创建新的接口

创建多个组件版本: 抽象类
设计小而简练的功能模块: 接口
设计大型功能单元: 抽象类 (肯定要考虑重用)

interface接口 - 显性接口

显式接口: 同一个类里有2个或2个以上的具有相同方法的interface,这时候要用显式接口

void IWindow.Close() //显性显式接口 是不可见的,默认是私有的
{....}
void IFile.Close()
{...}

public void Close()
{
//转化
(this as IFile).Close(); //this在这里是当对象的实例.
((IWindow)this).Close();
//以上两种转化接口的效果是一样的.
}

不允许使用访问修饰符来实现显示接口. 因此,为了访问这些成员,必须把相关对象转换为相应的接口类型,
Chimpanzee chimp = new Chimpanzee();
IHerbivore vchimp = (IHerbivore) chimp;
bool hungry = vchimp.IsHungry;

Saturday, December 4, 2010

东北拉皮的做法

材料:绿豆淀粉+土豆淀粉(1:1),水,盐 可以都用绿豆淀粉。

按1份淀粉,4份或5份水的量,加半茶勺盐,搅匀成浆。 炒锅加水,在整个做粉皮的过程中最好让锅中的水保持微开的状态,水滚时可以适当加入凉水。 旋子中盛入少量浆水,然后坐在锅的水面上,正转、反转几圈,使旋内浆水摊铺均匀。 等粉浆遇热凝结成白色时,旋子倾斜。使锅中的水注入旋子内,这时可以看到粉皮逐渐由白变为透明,将水倒出,等1分钟后将熟透的粉皮取出。投入冷盆中,凉后捞出,铺平迭好,控干水分。 做粉皮的关键是水注入旋子内的时间,太早,粉皮还没有成型,太晚粉皮就会开裂。我的经验是等旋子内的粉浆逐渐变白,没有水时,就注入热水。