Re: Question about interface

Tech-Archive recommends: Fix windows errors by optimizing your registry



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
>
>


.



Relevant Pages

  • Re: Question about interface
    ... > For example, C++ supports multiple inheritance. ... > class classB(){ ... > public void swim(){ ... > So classC will have the features of fly and swim. ...
    (microsoft.public.dotnet.languages.csharp)
  • overriding inner classes
    ... public class ClassA{ ... private class LocalClass{ ... public void doit(){ ...
    (comp.lang.java.programmer)
  • Re: C# threading & events
    ... public void MethodA() ... ClassB b = new ClassB; ... private string _theSomething; ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: C# threading & events
    ... public void MethodA() ... ClassB b = new ClassB; ... private string _theSomething; ...
    (microsoft.public.dotnet.languages.csharp)