Re: Question about interface
- From: "Nick Malik [Microsoft]" <nickmalik@xxxxxxxxxxxxxxxxxx>
- Date: Fri, 27 May 2005 07:18:45 -0700
One variation on this is to simply make the composed parts available, while
hiding their construction. You lose substituability and you lose the
ability for the descendent class to access private members, but you get a
flexible interface that doesn't need to be changed when the parent types
change.
class ClassC {
......
ClassA _a;
ClassB _b;
public ClassC {
_a = new ClassA();
_b = new ClassB();
}
......
public ClassA a {
get { return _a;}
}
public ClassB b {
get { return _b;}
}
}
--
--- Nick Malik [Microsoft]
MCSD, CFPS, Certified Scrummaster
http://blogs.msdn.com/nickmalik
Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
I do not answer questions on behalf of my employer. I'm just a
programmer helping programmers.
--
"Bjorn Abelli" <bjorn_abelli@xxxxxxxxxxxxxxxxxxxxx> wrote in message
news:%23ysYpskYFHA.1412@xxxxxxxxxxxxxxxxxxxxxxx
>
> "Quentin Huo" <q.huo@xxxxxxxxxxxxxx> skrev i meddelandet
> news:%23WtNctjYFHA.2124@xxxxxxxxxxxxxxxxxxxxxxx
>> Hi:
>>
>> C# doesn't support multiple inheritance but it supports interface.But I
>> think these ways are different.
>>
>> For example, C++ supports multiple inheritance. I have two classess
>> classA and classB:
>>
>> class classA(){
>> ......
>> public void fly(){
>> ......
>> }
>> ......
>> }
>>
>> class classB(){
>> ......
>> public void swim(){
>> ......
>> }
>> ......
>> }
>> Now we can create another class "classC" which inherits
>> from "classA" and "classB".
>> So classC will have the features of fly and swim. The
>> important is we don't need do anything else.
>>
>> But in C#, it doesn't support multiple inheritance. Now, if I need to
>> create a class "classC" and it will have the "fly" and "swim" functions
>> in the existing classes "classA" and "classB", how can I do ?
>
> One fairly common way is to use composition:
>
>
> interface IFlyer {
> void fly();
> }
>
> interface ISwimmer {
> void swim();
> }
>
>
> class ClassA : IFlyer {
> ......
> public void fly(){
> ......
> }
> ......
> }
>
> class ClassB : ISwimmer {
> ......
> public void swim(){
> ......
> }
> ......
> }
>
> class ClassC : IFlyer, ISwimmer {
>
> ......
> ClassA a;
> ClassB b;
> ......
>
> public void fly(){
> a.fly();
> }
>
> public void swim() {
> b.swim();
> }
> }
>
> // Bjorn A
>
>
.
- References:
- Question about interface
- From: Quentin Huo
- Re: Question about interface
- From: Bjorn Abelli
- Question about interface
- Prev by Date: Re: GUI programming, MFC and C#
- Next by Date: Re: Marshal.AllocHGlobal failure after calling GetTokenInformation
- Previous by thread: Re: Question about interface
- Next by thread: Marshal.AllocHGlobal failure after calling GetTokenInformation
- Index(es):
Relevant Pages
|