11月26笔记
一、接口
a、接口与抽象类类似,接口侧重的是功能点的约束,是功能说明。团队开发中将相关功能定义为接口,由不同的人去实现,实现完之后按照一定的要求把实现的模块组装起来,就是一个完整的系统,大大提高了团队并行开发的能力。
b、抽象类和抽象方法侧重于继承,而接口侧重于功能定义与约束。不能多重继承但是可以实现多个接口。
c、接口定义规范:
- 使用关键字interface定义,接口类命名一般“I”开头。
 - 接口中的属性、方法等,只做一个声明,而没有任何实现。
 - 使用该接口的类必须实现接口中的所有方法,且方法的定义必须和接口中的方法定义的规范完全一致,因此我们也说接口具有强制性。
 - 接口中的属性、方法默认都是public。
 
我们通常说一个类继承一个类,实现了一个或多个接口。一个类同时用继承与接口时,父类写在最前面。
接口层(IDAL层),作为DAL层必须实现的接口。有了约束,这样DAL层跟BLL层的实现就可以同时进行而彼此不会纠缠在一块,高内聚、低耦合。逻辑简单清晰,分工协作,效率高些;IDAL定义了所有底层方法,给DAL层留下接口;
二、接口的显示实现和隐示实现
a、隐示实现接口和类都可以访问。显示实现只有接口可以访问。也就是,接口可以访问显示实现和隐式显示,而类只可以访问隐式实现。
b、显示实现的好处:1)隐藏了实现接口的类的实现代码。
2)在使用接口访问的系统中,限制调用者只能通过接口调用而不是底层的类来访问。
隐示实现:
public interface IReview
{
    void GetReviews();
}
public class ShopReview :IReview
{
    //隐式实现
    public void GetReviews(){}
} 
这种方式是隐示实现:
IReview rv = new ShopReview(); rv.GetReviews();
ShopReview rv = new ShopReview(); rv.GetReviews();
都可以调用GetReviews这个方法。
显示实现:
public interface IReview
{
    void GetReviews();
}
public class ShopReview :IReview
{
    //显式实现
    void IReview.GetReviews(){}
} 
通过这种方式的接口实现。GetReviews就只能通过接口来调用:
IReview rv = new ShopReview();rv.GetReviews();
下面的这种方式将会编译错误:
ShopReview rv = new ShopReview();rv.GetReviews();
两者区别:
1)、隐式实现接口时,我们有两种方式调用实现接口的方法(GetName()),即:
和
2)、显式实现接口时,我们只有一种方法来调用GetName(),即:

                    
                
                
            
        
浙公网安备 33010602011771号