关于接口实现方式

时间:2022-06-12 05:04:49
  A、B为接口,c为类,A a=new c()去实现A接口,那 为什么可以B b=a.方法(参数1)呢,这个是用A接口的方法去显现B接口的意思么。。。。不懂。。

5 个解决方案

#1


AE开发的问题,类似这个
IWorkspaceFactory pworkspacefactory = new RasterWorkspaceFactory();
    IWorkspace pworkspace = pworkspacefactory.OpenFromFile(pfilepath,0);

#2


在 C# 或者 VB 这样的语法里面, 你这种类似执行一个 QueryInterface 这样的方法来查询接口的。
所以和 C++ 里面不同的是,这里的赋值语句可能会抛出异常的。
而 C++ 里面的 赋值语句是不会抛出异常的。

#3


不懂,很正常
因为你想去理解臆想的描述,自然是不可能的
A a=new c()去实现A接口
这是实例化类 c,并把它当作 A 类型使用,这就意味着 c 中一定实现了 A 接口声明的方法

B b=a.方法(参数1)
表示 a.方法 返回了一个 B 类型的数据
与接口没有直接的关系


里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,
基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

#4


一个类实现多个接口 返回不同的类型 关于接口实现方式

#5


A a=new c()

B b=a.方法(参数1)
是两码事吧。
A a=new c() 代表  c是 A的派生类。
而B b=a.方法(参数1)只是说 A中有一个方法 会返回一个 b对象。但是不代表A和B有继承关系。

#1


AE开发的问题,类似这个
IWorkspaceFactory pworkspacefactory = new RasterWorkspaceFactory();
    IWorkspace pworkspace = pworkspacefactory.OpenFromFile(pfilepath,0);

#2


在 C# 或者 VB 这样的语法里面, 你这种类似执行一个 QueryInterface 这样的方法来查询接口的。
所以和 C++ 里面不同的是,这里的赋值语句可能会抛出异常的。
而 C++ 里面的 赋值语句是不会抛出异常的。

#3


不懂,很正常
因为你想去理解臆想的描述,自然是不可能的
A a=new c()去实现A接口
这是实例化类 c,并把它当作 A 类型使用,这就意味着 c 中一定实现了 A 接口声明的方法

B b=a.方法(参数1)
表示 a.方法 返回了一个 B 类型的数据
与接口没有直接的关系


里氏替换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。
里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,
基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

#4


一个类实现多个接口 返回不同的类型 关于接口实现方式

#5


A a=new c()

B b=a.方法(参数1)
是两码事吧。
A a=new c() 代表  c是 A的派生类。
而B b=a.方法(参数1)只是说 A中有一个方法 会返回一个 b对象。但是不代表A和B有继承关系。